我有一个错误
stack expects each tensor to be equal size, but got [15, 414] at entry 0 and [31, 414] at entry 1
我正在尝试创建一个解决方案,通过在Dataloader中使用list并借助自定义collate_fn创建一批具有不同形状的Tensor,来解决除补零和采样之外的这个问题。
我试过了,但还是有问题
`def collate_fn(batch):
num_features = len(batch[0])
result = [[] for _ in range(batch[0])]
for data in batch:
for i in range(num_features):
result[i].append(data[i])
return result `
如何修复此功能?
我想得到这个
batch X num_exampls X imgs
型
其中,imgs是img数量的列表,img_features为[num_examples, [imgs, features]]
1条答案
按热度按时间krugob8w1#
你可以试试
并将其传递给
DataLoader
。这样,DataLoader
返回的每个批处理都将是一个Tensor列表,并且torch.stack
不会在列表中被调用。但是,collate_fn
期望Dataset.__getitem__
返回一个NumPy数组(可以是不同的形状)。例如: