从cifar-10数据加载图像

2024-04-25 20:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用cifar-10数据集训练分类器。我已经下载了数据集并试图显示数据集中的am图像。我使用了以下代码:

from six.moves import cPickle as pickle
from  PIL import Image
import numpy as np

f = open('/home/jayanth/udacity/cifar-10-batches-py/data_batch_1', 'rb')

tupled_data= pickle.load(f, encoding='bytes')

f.close()

img = tupled_data[b'data']

single_img = np.array(img[5])

single_img_reshaped = single_img.reshape(32,32,3)

plt.imshow(single_img_reshaped)

数据描述如下: 每个阵列存储一个32x32彩色图像。前1024个条目包含红色通道值,后1024个条目包含绿色通道值,最后1024个条目包含蓝色通道值。图像以行主顺序存储,因此数组的前32个条目是图像第一行的红色通道值。

我的实施是否正确?

上面的代码给了我以下图像: enter image description here


Tags: 数据代码from图像importimgdataas
3条回答
single_img_reshaped = single_img.reshape(3,32,32).transpose([1, 2, 0])

我用过

single_img_reshaped = np.transpose(np.reshape(single_img,(3, 32,32)), (1,2,0))

在我的程序中得到正确的格式。

由于Python使用默认的类似C的索引顺序(row major order),因此可以强制它按列major order工作:

import numpy as np
import matplotlib.pyplot as plt

# I assume you have loaded your data into x_train (see some tutorial)

data = x_train[0, :] # get a row data
data = np.reshape(data, (32,32,3), order='F' ) # Fortran-like indexing order
plt.imshow(data)

相关问题 更多 >