尝试将显着性图放置到图像上并创建新的数据集 这个load_cifar10是Torchvision 具有(50000,32,32,3)的sal_maps_hf形状 但是当我运行 -------------------------------------------------- ---------------------------- KeyError Traceback(最近的呼叫
最后)〜/ venv / lib / python3.7 / site-packages / PIL / Image.py
fromarray(obj,mode)2644 typekey =(1,1)+ shape [2:],
arr [“ typestr”]
-> 2645模式,rawMode = _fromarray_typemap [typekey] 2646,但KeyError: KeyError:((1,1,3),'
在处理上述异常期间,发生了另一个异常: TypeError跟踪(最近的呼叫
最后)
----> 1个show_images(trainloader)
1 def show_images(trainloader):
----> 2代表idx,枚举(trainloader)中的(img,target):
3 img = img.squeeze()
4 #pritn(img)
5 img = torch.tensor(img) 〜/ venv / lib / python3.7 / site-packages / torch / utils / data / dataloader.py在
下一个(个体经营)
344 def 下一个(个体):
345 index = self._next_index()#可能会引发StopIteration
-> 346数据= self._dataset_fetcher.fetch(index)#可能会引发StopIteration
第347章
348数据= _utils.pin_memory.pin_memory(数据) 〜/ venv / lib / python3.7 / site-packages / torch / utils / data / _utils / fetch.py在
提取(自己,可能是_batched_index)
42 def提取(自己,可能是_batched_index):
43如果self.auto_collation:
---> 44数据= [self.dataset [idx] for ids in exist_batched_index]
其他45条:
46数据= self.dataset [possible_batched_index] 〜/ venv / lib / python3.7 / site-packages / torch / utils / data / _utils / fetch.py在
(.0)
42 def提取(自己,可能是_batched_index):
43如果self.auto_collation:
---> 44数据= [self.dataset [idx] for ids in exist_batched_index]
其他45条:
46数据= self.dataset [possible_batched_index] 〜/ venv / lib / python3.7 / site-packages / torchvision / datasets / cifar.py在
getitem (自我,索引)
120#这样做,以便与所有其他数据集一致
121#返回PIL图像
-> 122 img = Image.fromarray(img)
123
124如果self.transform不是None: 〜/ venv / lib / python3.7 / site-packages / PIL / Image.py在fromarray(obj,
模式)2645模式,rawmode = _fromarray_typemap [typekey]
2646除了KeyError:
-> 2647引发TypeError(“无法处理此数据类型”)2648否则:2649 rawmode = mode TypeError:无法处理此数据类型 getitem
数据点数:50000
根目录位置:/ mnt / 3CE35B99003D727B / input / pytorch / data
拆分:火车
StandardTransform转换:Compose(
调整大小(大小= 32,插值= PIL.Image.BILINEAR)
ToTensor()
) 答案 0 :(得分:2) 您的 根据问题和评论中的部分信息,我想您的掩码是 尝试:
trainloader = utilsxai.load_data_cifar10(batch_size=1,test=False)
testloader = utilsxai.load_data_cifar10(batch_size=128, test=True)
data = trainloader.dataset.data
trainloader.dataset.data = (data * sal_maps_hf).reshape(data.shape)
和Trainloader形状
与(50000,32,32,3)for idx,img in enumerate(trainloader):
trainloader.dataset.__getitem__
数据集CIFAR10的
1 个答案:
sal_maps_hf
不是np.uint8
。dtype
np.float
(或类似的掩码),然后乘以data * sal_maps_hf
,您的数据将被转换为dtype
以外的np.uint8
导致PIL.Image
引发异常。trainloader.dataset.data = (data * sal_maps_hf).reshape(data.shape).astype(np.uint8)