我正在复制 ResNet(来源:https://arxiv.org/abs/1512.03385)。
我遇到了错误“TypeError: '<' not supported between instances of 'Tensor' and 'list'" when trying to go through several different dataset in different sections of my code.
我尝试了不同的修复,但没有成功:(i)我删除了枚举,因为我担心使用它可能会导致问题(ii)我尝试通过数据加载器而不是数据集,但它不起作用
第一次:当我尝试查看图像时:
for images, _ in train_loader:
print('images.shape:', images.shape)
plt.figure(figsize=(16,8))
plt.axis('off')
plt.imshow(torchvision.utils.make_grid(images, nrow=16).permute((1, 2, 0)))
break
第二次/第三次:当我尝试验证/测试 resnet 时:
with torch.no_grad():
for j, inputs, labels in enumerate(test_loader, start=0):
outputs = resnet_models[i](inputs)
_, prediction = torch.max(outputs, dim=1)
你可能会注意到,我在训练resnet时并没有遇到这个错误,而且代码非常相似:
for batch, data in enumerate(train_dataloader, start=0):
inputs, labels = data
inputs, labels = inputs.to(device), labels.to(device)
TypeError Traceback(最近一次调用最后一次) 输入 [38],在
() 中 6 print(“标准化后的图像”) 7 打印(“--------------------------”) ----> 图像为 8,training_data 中的 _: 9 排序=假 10 print('images.shape:', images.shape) | 文件 ~/miniconda3/envs/resnet/lib/python3.9/site->packages/torch/utils/data/dataset.py:471,在子集中。getitem(self, idx) 第469章 第470章 --> 471 返回 self.dataset[self.indices[idx]]
文件〜/miniconda3/envs/resnet/lib/python3.9/site->packages/torchvision/datasets/cifar.py:118,在CIFAR10中。getitem(self,index) [第 115 章] 117 如果 self.transform 不是 None: --> 118 img = self.transform(img) 120 如果 self.target_transform 不是 None: 第121话
文件 ~/miniconda3/envs/resnet/lib/python3.9/site->packages/torchvision/transforms/transforms.py:95,在 Compose 中。call(self, img) 93 def call(自我,img): 94 for t in self.transforms: ---> 95 img = t(img) 96 返回图片
文件 ~/miniconda3/envs/resnet/lib/python3.9/site->packages/torch/nn/modules/module.py:1110,在 Module._call_impl(self, *input, **kwargs) 攀上漂亮女局长之后1106 攀上漂亮女局长之后1107 第1108章 [第 1109 章] -> 1110 返回forward_call(*输入,**kwargs) 第1111章 第1112章文件 ~/miniconda3/envs/resnet/lib/python3.9/site->packages/torchvision/transforms/transforms.py:707,在 RandomHorizontalFlip.forward(self, >img) 699 def 转发(自身,img): 第700章 第701章 702 img (PIL Image or Tensor):要翻转的图像。 (...) 705 PIL图像或张量:随机翻转图像。 第706章 --> 707 if torch.rand(1)
类型错误:'< self.p: 708 return F.hflip(img) 709 return img
<' not supported between instances of 'Tensor' and 'list'
torchvision.transforms.RandomHorizontalFlip([0.5]),
错误在于这个转换的输入不应该是列表,而应该是
torchvision.transforms.RandomHorizontalFlip(0.5),
所以,如果有什么我可以推荐的,那就是也许有一些列表参数正在传递,不应该在某些转换或其他方式中。
类型错误:“张量”和“列表”实例之间不支持“...”
当我尝试将
<
与张量和列表一起使用时,如下所示。 *将
<=
、>
或 >=
与张量和列表一起使用也会出现相同的错误:import torch
torch.tensor([5, 10, 15]) < [2] # Error
所以,我将
<
与张量和
2
一起使用,然后我可以得到如下所示的结果:import torch
torch.tensor([5, 10, 15]) < 2 # tensor([False, False, False])
此外,您可以将
==
或
!=
与张量和列表一起使用,则可以得到如下所示的结果:import torch
torch.tensor([5, 10, 15]) == [2] # False
import torch
torch.tensor([5, 10, 15]) != [2] # True