检查模型输入时出错:预期 volution2d_input_1 有 4 个维度,但得到形状为 (32, 32, 3) 的数组

2024-01-27

我想从下一层开始训练一个深度网络:

model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))

using

history = model.fit_generator(get_training_data(),
                samples_per_epoch=1, nb_epoch=1,nb_val_samples=5,
                verbose=1,validation_data=get_validation_data()

使用以下生成器:

def get_training_data(self):
     while 1:
        for i in range(1,5):
            image = self.X_train[i]
            label = self.Y_train[i]
            yield (image,label)

(验证生成器看起来类似)。

在训练过程中,我收到错误:

Error when checking model input: expected convolution2d_input_1 to have 4 
dimensions, but got array with shape (32, 32, 3)

怎么可能,有了第一层

 model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))

?


您定义的输入形状是单个样本的形状。模型本身需要一些样本数组作为输入(即使它是长度为 1 的数组)。

您的输出实际上应该是 4 维,其中第一维用于枚举样本。即对于单个图像,您应该返回 (1, 32, 32, 3) 的形状。

您可以找到更多信息here https://keras.io/layers/convolutional/在“Convolution2D”/“输入形状”下

Edit:根据下面 Danny 的评论,如果您想要批量大小为 1,您可以使用以下命令添加缺失的维度:

image = np.expand_dims(image, axis=0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查模型输入时出错:预期 volution2d_input_1 有 4 个维度,但得到形状为 (32, 32, 3) 的数组 的相关文章

随机推荐