首页 > 解决方案 > 模型精度从 0.5%(0.0050) 不变

问题描述

我正在使用 Keras 训练用于图像分类的 CNN 模型。我正在使用 VGG19 模型和一个自定义数据集,其中包含 200 个类和均匀分布的 90000 个训练图像、10000 个验证图像和 10000 个测试图像。即使训练有 200 个 epoch,准确率也保持在恒定的 0.0050。与损失相同,5.2988。我正在使用 Kaggle 的 TPU 实例来运行这个模型。

如何使模型更准确?你能为此目的推荐任何不同的预训练模型吗?

标签: pythontensorflowkeras

解决方案


您的 CNN 模型表现得像一个随机模型。

我知道这一点是因为因为有 200 个类,所以随机获得正确类的概率是 1/200=0.0050,这就是你所拥有的准确度。

当您使用 tensorflow/keras API 而不是 sequence() 时会发生这种情况

由于您使用的是 VGG19,如果您尝试使用迁移学习,那么您可能冻结了错误的层

如果您使用的是 API,那么您必须这样做

model = Model(inputs = input_layer, outputs = output_layer)    #which is not required in sequential()

print(model.layers)      # if you are using API or sequential() this is used to check your layers

然后你必须冻结所需的层

model.layers[index_of_freeze_layer].trainable  = False

如果您没有冻结模型层,请尝试使用较低的学习率,因为 VGG19 对学习率非常敏感。(0.00001 或更少取决于)


推荐阅读