问题描述
我克隆了 transfer-learning-library 存储库并致力于最大分类器差异。我正在尝试更改增强但收到以下错误
Traceback (most recent call last):
File "mcd.py",line 378,in <module>
main(args)
File "mcd.py",line 145,in main
results = validate(val_loader,G,F1,F2,args)
File "mcd.py",line 290,in validate
for i,(images,target) in enumerate(val_loader):
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/DataLoader.py",line 521,in __next__
data = self._next_data()
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/DataLoader.py",line 1203,in _next_data
return self._process_data(data)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/DataLoader.py",line 1229,in _process_data
data.reraise()
File "/usr/local/lib/python3.7/dist-packages/torch/_utils.py",line 425,in reraise
raise self.exc_type(msg)
TypeError: Caught TypeError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/worker.py",line 287,in _worker_loop
data = fetcher.fetch(index)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py",line 44,in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py",in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
File "../../../common/vision/datasets/imagelist.py",line 48,in __getitem__
img = self.transform(img)
File "/usr/local/lib/python3.7/dist-packages/torchvision/transforms/transforms.py",line 60,in __call__
img = t(img)
File "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py",line 1051,in _call_impl
return forward_call(*input,**kwargs)
File "/usr/local/lib/python3.7/dist-packages/torchvision/transforms/transforms.py",line 750,in forward
return F.perspective(img,startpoints,endpoints,self.interpolation,fill)
File "/usr/local/lib/python3.7/dist-packages/torchvision/transforms/functional.py",line 647,in perspective
return F_pil.perspective(img,coeffs,interpolation=pil_interpolation,fill=fill)
File "/usr/local/lib/python3.7/dist-packages/torchvision/transforms/functional_pil.py",line 289,in perspective
return img.transform(img.size,Image.PERSPECTIVE,perspective_coeffs,interpolation,**opts)
File "/usr/local/lib/python3.7/dist-packages/PIL/Image.py",line 2371,in transform
im = new(self.mode,size,fillcolor)
File "/usr/local/lib/python3.7/dist-packages/PIL/Image.py",line 2578,in new
return im._new(core.fill(mode,color))
TypeError: integer argument expected,got float
之前的代码是
# Data loading code
normalize = T.normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225])
if args.center_crop:
train_transform = T.Compose([
ResizeImage(256),T.CenterCrop(224),T.RandomHorizontalFlip(),T.ToTensor(),normalize
])
else:
train_transform = T.Compose([
ResizeImage(256),T.RandomresizedCrop(224),normalize
])
val_transform = T.Compose([
ResizeImage(256),normalize
])
我刚刚为 val_transform 添加了 T.RandomPerspective(distortion_scale = 0.8,p=0.5,fill=0.6)
。
在此之前,我还为 train_transform 添加了一些其他转换,但仍然出现相同的错误。
可能是什么问题?
解决方法
fill
参数必须是整数。
此转换不支持 fill
类型的 Tensor
参数;因此,如果您希望使用 fill
参数,则必须在 ToTensor
转换之前使用此转换。此时,数据是完整的。