ValueError:检查目标时出错:预期max_pooling2d_1有4个维度,但得到的形状为数组(61,1)

时间:2018-03-11 10:57:43

标签: tensorflow keras

我在Windows 10上使用keras tensorflow后端。 我无法解释错误的含义

以下是我的代码片段

{
model = Sequential([
    #Dense(32, input_shape=(1080,1920,2)),
    Dense(32, input_shape=(250,250, 3)),
    #Dense(32, input_shape=(3,1080,1920,2)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
    Dropout(0.02),
])

layer = Dropout(0.02)

#further layers:
model.add(Dense(units=3)) #hidden layer 1
model.add(Dense(units=1)) #output layer
model.add(Conv2D(3, (3, 3)))
model.add(MaxPooling2D(pool_size=(2, 2),strides=None,padding='valid', data_format=None))

model.compile(loss=losses.mean_squared_error, optimizer='sgd')

sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)


test_generator = ImageDataGenerator()

validation_generator = test_generator.flow_from_directory(
    'human_faces/validation',
    target_size=(250,250),
    batch_size=3,
    class_mode=None,classes=0)


model.fit_generator(
    train_generator,
    steps_per_epoch=1,## batch_size,
    #steps_per_epoch=3,
    epochs=5,
    validation_data=validation_generator,
    #  validation_steps=61 )  # batch_size)
    validation_steps=1)

}

我的错误:

  

文件“C:/Users/Owner/PycharmProjects/untitled1/work.py”,第89行,在          validation_steps = 1)ValueError:检查目标时出错:预期max_pooling2d_1有4个维度,但得到了数组   形状(61,1)

2 个答案:

答案 0 :(得分:0)

网络输出的形状(MaxPooling2D图层的输出)与您期望的输出之间存在不匹配(基于您一起输入的所需“真实”输出示例每个输入到model.fit_generator()

要调查不匹配,您必须检查train_generator的(未示出的)代码,以查看您期望的输出形状,并可以使用model.summary()查看{MaxPooling2D生成的冲突输出形状1}}图层。

答案 1 :(得分:0)

尝试将以下参数添加到Cov2D:

padding='SAME'

赞:

model.add(Conv2D(3, (3, 3),padding='SAME'))