如何将张量列表放入pytorch中的新张量中?

时间:2021-02-21 20:12:49

标签: python list pytorch tensor

如何将张量列表合并为一个张量?

我有一个包含 64 张图像(128x128,RGB)的列表,我想创建一批具有以下尺寸的图像:torch.Size([64, 3, 128, 128])

我尝试使用 torch.stack(),但如果不进行迭代就无法获取列表的所有元素。

我该怎么做?

lfw_dataset = ImageFolder(os.path.join(root_dir), transform=test_transform)
lfw_dataset_train, lfw_dataset_val = torch.utils.data.random_split(lfw_dataset_train1, [train_values, validation_values])
train_loader = DataLoader(lfw_dataset_train, batch_size, num_workers=4, shuffle=True)
val_loader   = DataLoader(lfw_dataset_val,   batch_size, num_workers=4, shuffle=False)
# Define dictionary of loaders
loaders = {"train": train_loader,
           "val": val_loader}
 
positive_list= []
negative_list= []
positive_img = []
negative_img = []
for i, (input, labels) in enumerate(loaders["train"]):
  for num, x in enumerate(labels):
    target = x.item()
    k = [i for i, (imgs, label_pos) in enumerate(lfw_dataset.imgs) if label_pos==target]
    group_pos = (target, k)
    positive_list.append(group_pos)
    for i, (imgs, label_neg) in enumerate(lfw_dataset.imgs):
       if label_neg!=target:
         j = [i]
       break
    group_neg = (target, j)
    negative_list.append(group_neg)
    anchor_img=input[num]
    positive = random.choice(positive_list[num][1])
    negative = random.choice(negative_list[num][1])
    positive_img.append(lfw_dataset[positive][0])
    negative_img.append(lfw_dataset[negative][0])

1 个答案:

答案 0 :(得分:0)

你必须使用 torch.cat(input1, input2, dim)