2017-01-10 87 views
11

欲培养深网络开始用下面的层:错误检查时模型输入:预期convolution2d_input_1有4个维度,但得到了阵列的形状(32,32,3)

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))) 

+2

你是如何解决它的更多信息here? –

回答

15

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

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

下可以找到“Convolution2D” /“输入型”

+0

要改变什么?我收到了一个类似的错误-http://paste.ubuntu.com/24188374/ –

+0

@AhishekBhatia您应该以相同的方式更改x_ip_shape。 – ginge

+9

更改输入大小会导致错误更改为“输入0与图层conv2d_1:预期的ndim = 4,找到的ndim = 5不兼容”。 任何人都有一些帮助? – Stormsson

相关问题