【发布时间】:2018-04-11 06:20:07
【问题描述】:
我正在尝试使用 Keras 应用程序实现多个网络。在这里我附上了一段代码,这段代码适用于 ResNet50 和 VGG16,但是当涉及到 MobileNet 时,它会产生错误:
ValueError: 检查目标时出错:预期 dense_1 有 4 个维度,但得到的数组形状为 (24, 2)
我正在处理具有 3 个通道和 24 批量大小的 224x224 图像,并尝试将它们分类为 2 个类,因此错误中提到的数字 24 是批量大小,但我不确定数字 2,可能是班数。
顺便说一句,有没有人知道我为什么会收到keras.applications.mobilenet 的此错误?
# basic_model = ResNet50()
# basic_model = VGG16()
basic_model = MobileNet()
classes = list(iter(train_generator.class_indices))
basic_model.layers.pop()
for layer in basic_model.layers[:25]:
layer.trainable = False
last = basic_model.layers[-1].output
temp = Dense(len(classes), activation="softmax")(last)
fineTuned_model = Model(basic_model.input, temp)
fineTuned_model.classes = classes
fineTuned_model.compile(optimizer=Adam(lr=0.0001), loss='categorical_crossentropy', metrics=['accuracy'])
fineTuned_model.fit_generator(
train_generator,
steps_per_epoch=3764 // batch_size,
epochs=100,
validation_data=validation_generator,
validation_steps=900 // batch_size)
fineTuned_model.save('mobile_model.h5')
【问题讨论】:
标签: python tensorflow deep-learning keras