无法将大小为23715的数组重塑为形状(224,224,3)

时间:2019-12-20 13:06:07

标签: python numpy

我正在做皮肤癌检测算法。问题是我有2635个224 x 224像素的RGB图像。数据扩充后,我得到了23715张图像(train_data)。

我的问题是我收到此错误-> ValueError:无法将大小为23715的数组重塑为形状(224,224,3)

这是我的代码:

X = np.array([i[0] for i in train_data]).reshape(-1, IMG_SIZE, IMG_SIZE, 3)
Y = [i[1] for i in train_data]

test_x = np.array([i[0] for i in test_data]).reshape(-1, IMG_SIZE, IMG_SIZE, 3)
test_y = [i[1] for i in test_data]

model.fit({'input': X}, {'targets': Y}, n_epoch=10, shuffle=True, validation_set=({'input': test_x}, {'targets': test_y}),  
snapshot_step=500, show_metric=True, run_id=MODEL_NAME)

我该怎么做才能解决此问题?在互联网上查看时,我发现了类似的错误,但仍存在修复问题。

1 个答案:

答案 0 :(得分:0)

您的问题是train_data中的图像大小都不相同。从您的测试输出中:

>>> [i[0].shape for i in train_data[:5]]
[(160, 160, 3), (224, 224, 3), (224, 224, 3), (160, 160, 3), (224, 224, 3)]

这里至少有两种不同的尺寸(160x160 RGB和224x224 RGB)。

结果是NumPy在创建X时不知道如何对齐数据,因为输入元素的大小不一致。如果您打印X,将会看到类似这样的内容:

>>> X
array([array([[[...
    ...
    ...]]])], dtype=object)

在这种情况下NumPy会退缩。

您将要查找为什么您的图片大小不同的原因。