首页 文章

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

提问于
浏览
0

我在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

    网络输出的形状(这是 MaxPooling2D 图层的输出)与您期望的输出之间存在不匹配(基于所需的"true"输出示例,您将每个输入与 model.fit_generator() 一起提供 .

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

  • 0

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

    padding='SAME'

    喜欢:

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

相关问题