当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《检查模型输入时出错:预期卷积2d_input_1有4个维度,但得到的形状为数组(32,32,3)》经验,为你挑选了1个好方法。

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

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

运用

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> ginge..:

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

你的输出真的应该是4-d,第一维用于枚举样本.即对于单个图像,您应该返回(1,32,32,3)的形状.

你可以找到更多的信息在这里下的"Convolution2D" /"输入型"


使用`image = np.expand_dims(image,axis = 0))`来添加额外的维度
更改输入大小会导致错误更改为"输入0与图层conv2d_1不兼容:预期ndim = 4,找到ndim = 5".有人帮忙吗?
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有