我对火把很陌生。我正在尝试创建一个DCGAN项目。我用了整个官方的火把教程作为基地。
我有一个numpy数组,它是八个数组的组合,它给出了一个形状(60,60,8),这个形状是特殊的。
lista2 = [0, 60, 120, 180, 240, 300, 360, 420]
total = []
for i in lista2:
N1 = intesity[0:60, i:i+60]
total.append(N1)
N2 = intesity[60:120, i:i+60]
total.append(N2)
N3 = intesity[120:180, i:i+60]
total.append(N3)
N4 = intesity[180:240, i:i+60]
total.append(N4)
N5 = intesity[240:300, i:i+60]
total.append(N5)
N6 = intesity[300:360, i:i+60]
total.append(N6)
N7 = intesity[360:420, i:i+60]
total.append(N7)
N8 = intesity[420:480, i:i+60]
total.append(N8)
total = np.reshape(total, (64, 60,60,8))
total -= total.min()
total /= total.max()
total = np.asarray(total)
print(np.shape(total)(64, 60, 60, 8)正如您所看到的,该数组中有64个元素,有64个训练图像(目前很少),该数组被转换为张量,然后转换为py手电筒数据集。
tensor_c = torch.tensor(total)创建数据集和数据采集器时,当试图绘制此DCGAN的培训映像时,会出现以下错误
dataset = TensorDataset(tensor_c) # create your datset
dataloader = DataLoader(dataset) # create your dataloader
real_batch = next(iter(dataloader))
plt.figure(figsize=(16,16))
plt.axis("off")
plt.title("Training Images")
plt.imshow(np.transpose(vutils.make_grid(real_batch[0].to(device)[:64], padding=0, normalize=True).cpu(),(1,2,0)))
dataset_size = len(dataloader.dataset)
dataset_size---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-42-5ba2d666ef25> in <module>()
10 plt.axis("off")
11 plt.title("Training Images")
---> 12 plt.imshow(np.transpose(vutils.make_grid(real_batch[0].to(device)[:64], padding=0, normalize=True).cpu(),(1,2,0)))
13 dataset_size = len(dataloader.dataset)
14 dataset_size
5 frames
/usr/local/lib/python3.7/dist-packages/matplotlib/image.py in set_data(self, A)
697 or self._A.ndim == 3 and self._A.shape[-1] in [3, 4]):
698 raise TypeError("Invalid shape {} for image data"
--> 699 .format(self._A.shape))
700
701 if self._A.ndim == 3:
TypeError: Invalid shape (60, 60, 8) for image data我太新了,我想知道怎样才能解决这个问题
发布于 2022-02-23 14:09:45
通常,图像将存储为表单height x width x n_channels的数组,其中标准RGB映像的n_channels为3,在某些情况下为RGBA映像的n_channels为4。matplotlib对如何用8个通道绘制图像没有一个内置的理解,就像您当前的图像数据一样。
也要注意维数的排序,因为pytorch期望形式batch_idx x channel x height x width的图像便于应用2D卷积,因为它们可以跨越最后的2维。在尝试在pytorch表单中绘制图像后,要小心地将其转换为matplotlib表单。
https://stackoverflow.com/questions/71237883
复制相似问题