【问题标题】:Reshaping 1D image array to 4D for Keras [duplicate]将 Keras 的 1D 图像阵列重塑为 4D [重复]
【发布时间】:2020-05-04 03:31:39
【问题描述】:

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

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

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

我已经看到几个线程建议 fixe 将我的数组转换为 (n_length, 250,250,3) 形式——我认为。然而,它们似乎都不适合我。我天真地尝试用

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

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

【问题讨论】:

标签: python arrays keras reshape


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

    你可以做的是首先创建一个空的 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]
    

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 2014-03-03
      • 2023-01-25
      • 1970-01-01
      • 2023-01-23
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多