使用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)
这显然会引发错误。如有任何建议,将不胜感激。
答案 0 :(得分: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)
答案 1 :(得分:0)
您可以做的是先创建一个空的numpy数组,然后使用 for 循环复制x_train数据。
new_x = np.empty((len(x_train),250,250,3))
for i in range(len(x_train)):
new_x[i] = x_train[i]