Python 使用Image.fromarray()时元组索引超出范围PIL

Python 使用Image.fromarray()时元组索引超出范围PIL,python,numpy,scikit-learn,python-imaging-library,Python,Numpy,Scikit Learn,Python Imaging Library,我正在尝试将一些CIFAR10图像数据处理为图像块,以便在黑色画布上使用PIL进行打印。在从经过训练的模型中提取特征时,我已经成功地做到了这一点,但在使用Image.fromarray时,我不断得到索引器:元组索引超出范围 我的特征被塑造成形状(10000372)的测试数据。数据为32x32x3图像。 我加载cifar10数据,然后将数据展平,但仍会出现此错误 这是我的密码。其中一些是从中国借来的 以下是错误: Traceback (most recent call last): File

我正在尝试将一些CIFAR10图像数据处理为图像块,以便在黑色画布上使用PIL进行打印。在从经过训练的模型中提取特征时,我已经成功地做到了这一点,但在使用Image.fromarray时,我不断得到
索引器:元组索引超出范围

我的特征被塑造成形状(10000372)的测试数据。数据为32x32x3图像。 我加载cifar10数据,然后将数据展平,但仍会出现此错误

这是我的密码。其中一些是从中国借来的

以下是错误:

Traceback (most recent call last):
  File "tSNE_image_thumbnail.py", line 80, in <module>
    tSNE_image(x_test, 1000, 200, plots_output_path, 2)
  File "tSNE_image_thumbnail.py", line 56, in tSNE_image
    tile = Image.fromarray(np.uint8(x * 255), 'RGB')
  File "/home/zw/src/image_classification_ML/venv/lib/python3.8/site-packages/PIL/Image.py", line 2728, in fromarray
    size = shape[1], shape[0]
IndexError: tuple index out of range
回溯(最近一次呼叫最后一次):
文件“tSNE_image_缩略图.py”,第80行,在
tSNE_图像(x_测试,1000,200,打印输出路径,2)
文件“tSNE_image_缩略图.py”,第56行,在tSNE_图像中
tile=Image.fromarray(np.uint8(x*255),'RGB')
文件“/home/zw/src/image\u classification\u ML/venv/lib/python3.8/site packages/PIL/image.py”,第2728行,在fromarray中
大小=形状[1],形状[0]
索引器错误:元组索引超出范围

同样,当从CNN模型中提取特征并将其用于形状(10000512)密集层时,此代码工作正常。不知道为什么这会给我带来麻烦。有什么想法吗?提前感谢。

您的产品线中提供了长度为“3072”的阵列

tile = Image.fromarray(np.uint8(x * 255), 'RGB')
只需调用x的
np.uint8(x*255).shape
,返回
(3072,)
,即可验证它

但对于“RGB”图像,您需要3维,而不仅仅是1维

因此,您得到的错误
元组索引超出了范围
,因为需要一个包含三个条目而不是一个条目的数组

这意味着需要一个包含三个条目的元组,而不是(3072),例如(8,96,4),它将3072个值的一维数组映射到
8 x 96 x 4
(=3072)个值的矩阵

因此,您可以将代码中的行更改为

tile = Image.fromarray(np.uint8(x).reshape(8,96,4),'RGB')

但最后,您应该根据图像尺寸定义形状。

您能在
tile=image.fromarray(np.uint8(x*255),'RGB')的正上方打印
x
吗<如果
x
是标量,则code>np.uint8(x*255)
可能会呈现标量。。。
tile = Image.fromarray(np.uint8(x).reshape(8,96,4),'RGB')