我正在尝试在Keras Tensorflow中对Places-205数据集的选定子集进行传输学习,仅包含27个类别 . 我正在使用在ImageNet上预先训练过的InceptionV3,DenseNet121和ResNet50,并添加了几个额外的层来适应我的课程 . 如果模型是ResNet,我添加Flatten Dense进行分类,如果它是DenseNet或Inceptionv3,我添加Global Avg Pool Dense(relu)Dense(分类) . 这是代码片段:

x = base_model.output
if FLAGS.model in 'resnet50':
    x = Flatten(name="flatten")(x)
else:
    x = GlobalAveragePooling2D()(x)
    # Let's add a fully-connected layer
    x = Dense(1024, activation = 'relu')(x)
# And a logistic layer
predictions = Dense(classes, activation = 'softmax')(x)

对于DenseNet和Inceptionv3,培训是可以的,验证准确率达到70%,但对于ResNet,验证准确度保持固定在0.0369 / 0.037(这是我的课程数量的1/27) . 它似乎总是预测一个类,但它很奇怪,因为它的训练进展顺利,非特定的模型代码与DenseNet和InceptionV3完全相同,它们按预期工作 .

你知道为什么会这样吗?

非常感谢!