in data/dataset.py [0:0]
def __getitem__(self, index):
index = self.sample_indices[index]
image, attr, obj = self.data[index]
img = self.loader(image)
img = self.transform(img)
data = [
img, self.attr2idx[attr], self.obj2idx[obj], self.pair2idx[(attr,
obj)]
]
if self.phase == 'train':
all_neg_attrs = []
all_neg_objs = []
for _ in range(self.num_negs):
neg_attr, neg_obj = self.sample_negative(
attr, obj) # negative example for triplet loss
all_neg_objs.append(neg_obj)
all_neg_attrs.append(neg_attr)
neg_attr = torch.LongTensor(all_neg_attrs)
neg_obj = torch.LongTensor(all_neg_objs)
inv_attr = self.sample_train_affordance(
attr, obj) # attribute for inverse regularizer
comm_attr = self.sample_affordance(
inv_attr, obj) # attribute for commutative regularizer
data += [neg_attr, neg_obj, inv_attr, comm_attr]
return data