今天跑代码的时候遇到这个问题报错如下:
Exception has occurred: RuntimeError
Caught RuntimeError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/home/user-wsc/anaconda3/envs/yjhtorch16/lib/python3.8/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop
data = fetcher.fetch(index)
File "/home/user-wsc/anaconda3/envs/yjhtorch16/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
return self.collate_fn(data)
File "/home/user-wsc/anaconda3/envs/yjhtorch16/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 175, in default_collate
return [default_collate(samples) for samples in transposed] # Backwards compatibility.
File "/home/user-wsc/anaconda3/envs/yjhtorch16/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 175, in <listcomp>
return [default_collate(samples) for samples in transposed] # Backwards compatibility.
File "/home/user-wsc/anaconda3/envs/yjhtorch16/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 140, in default_collate
out = elem.new(storage).resize_(len(batch), *list(elem.size()))
RuntimeError: Trying to resize storage that is not resizable ```
然后把num_works设为0报错如下:
User
Exception has occurred: RuntimeError
stack expects each tensor to be equal size, but got [3, 410, 256] at entry 0 and [3, 295, 256] at entry 1
File "/home/user-wsc/code/FixMatch_agr/train.py", line 498, in test
for batch_idx, (inputs, targets) in enumerate(test_loader):
File "/home/user-wsc/code/FixMatch_agr/train.py", line 313, in main
test_loss, test_acc_s, test_acc_g = test(args, test_loader, model, epoch=10)
File "/home/user-wsc/code/FixMatch_agr/train.py", line 535, in <module>
main()
RuntimeError: stack expects each tensor to be equal size, but got [3, 410, 256] at entry 0 and [3, 295, 256] at entry 1
这个错误表明在堆叠(stacking)张量时,张量的大小不匹配。在上面的情况中,两个张量的高度维度不同,分别是 410 和 295。因此在数据预处理时,整图像的大小,使它们具有相同的高度。例如可以使用Resize。我发生错误是因为在train时Resize,而在验证集预处理时没有resize报错。在 transform_val中添加了transforms.RandomCrop。
transform_labeled = transforms.Compose([
transforms.RandomHorizontalFlip(),
transforms.RandomCrop(size=32,
padding=int(32*0.125),
padding_mode='reflect'),
transforms.ToTensor(),
transforms.Normalize(mean=AgriculturalDisease_mean, std=AgriculturalDisease_std)
])
transform_val = transforms.Compose([
transforms.RandomCrop(size=32,
padding=int(32*0.125),
padding_mode='reflect'),
transforms.ToTensor(),
transforms.Normalize(mean=AgriculturalDisease_mean, std=AgriculturalDisease_std)
])