将Keras的1D图像阵列重塑为4D

问题描述 投票:0回答:1

使用keras构建CNN比较笔迹时,我需要传递4D数组。但是,我的图像阵列只有一维,其中每个条目都是(250,250,3)图像。

print(x_train[0].shape)
>> (250,250,3)
print(x_train.shape)
>> (543, 1)

我收到以下错误:“预期conv2d_1_input具有4个维,但数组的形状为(543,1)”(请注意,该大小非常小,因为在构建数据库之前,我试图使网络工作) 。

我已经看到了几个带有建议修复的线程,可以将我的数组转换为(n_length,250,250,3)的形式-我认为。但是他们似乎都不适合我。我天真地尝试使用

重塑数组
x_train.reshape(len(x_train),250,250,3)

这显然会引发错误。如果有任何建议,将不胜感激。

python arrays keras reshape
1个回答
0
投票

[x_train.reshape(len(x_train),250,250,3)-如果您所有的图像都具有相同的尺寸,则绝对可以使用。

您可以尝试固定其尺寸并删除任何损坏的图像。

import cv2
x_train2 = []
for img in x_train:
    if len(img.shape) == 3:
        x_train2.append(cv2.resize(img, (250,250,3)))

x_train = np.array(x_train2).reshape(len(x_train2),250,250,3)
© www.soinside.com 2019 - 2024. All rights reserved.