【发布时间】:2018-02-24 12:08:36
【问题描述】:
我想重塑图像列表,train_data 大小为 639976。
这就是我导入图像的方式,
train_data=[]
for img in tqdm(os.listdir('Images/train/images')):
path=os.path.join ('Images/train/images/',img)
image=cv2.imread(path,cv2.IMREAD_COLOR)
image=cv2.resize(image, (28,28)).astype('float32')/255
train_data.append(image)
return train_data
np.reshape(train_data,(-1,28,28,3))
我在这里遇到内存错误。
np.reshape(train_data,(-1,28,28,3))
错误:
返回数组(a, dtype, copy=False, order=order)
内存错误
【问题讨论】:
-
你的数据大小不是
28*28*3的整数倍。这就是导致.reshape()失败的原因。 -
这是一个数组列表,其中每个图像被导入为 (28*28) 作为 float32 类型。
-
要精确。数组列表不是 multidim-array / np.array。此外,大多数常见图像不会自动转换为浮动(通常:uint8)。您显示的代码缺少所有这些细节。
-
哦,所以您将
np.reshape应用于可能不同大小的图像的列表。 NumPy 尝试将它们转换为 4 维数组,但由于大小不同而失败。您应该确保train_data的所有元素具有相同的大小或独立地重塑每个元素。 -
我已经编辑了我的帖子。我在导入图像(28 * 28)时没有问题。我想我在导入时已经重塑了它们。但是为什么我稍后会出错?