python - 模型精度从 0.5%(0.0050) 不变
问题描述
我正在使用 Keras 训练用于图像分类的 CNN 模型。我正在使用 VGG19 模型和一个自定义数据集,其中包含 200 个类和均匀分布的 90000 个训练图像、10000 个验证图像和 10000 个测试图像。即使训练有 200 个 epoch,准确率也保持在恒定的 0.0050。与损失相同,5.2988。我正在使用 Kaggle 的 TPU 实例来运行这个模型。
如何使模型更准确?你能为此目的推荐任何不同的预训练模型吗?
解决方案
您的 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 或更少取决于)
推荐阅读
- .htaccess - 如何将包含静态和动态变量的 URL 重定向到动态 URL
- laravel - 如何向 laravel-passport 访问令牌添加自定义声明?
- graphite - Graphite django-admin.py raise ImproperlyConfigured("SECRET_KEY 设置不能为空或没有名为 'graphite' 的模块
- java - 首次启动时将活动设为默认活动
- apache-kafka - 具有单个 Kafka 消费者的负载平衡节点 js 应用程序
- javascript - 如何在 Angular Universal 中降低服务器端渲染的成本
- python - 如何提取两个角色之间的兴趣值?
- javascript - 将图像移动到图像集的右侧或左侧 onClick
- javascript - 我需要一个没有 EF 的 asp.net mvc 中带有复选框的下拉列表
- python-3.x - 如何使用 python Selenium webdriver 滚动加载在网页中的 PDF?