python-3.x - UNET 训练:准确度从 0.99 开始
问题描述
我正在尝试使用 UNET 进行一些图像分割(类似于this但 2D )。然而,即使在 epoch 1 开始时,准确度也开始非常高。
32/3616 [..............................] - ETA: 4:59:02 - loss: 0.6761 - accuracy: 0.9964
64/3616 [..............................] - ETA: 5:02:32 - loss: 0.4355 - accuracy: 0.9966
这是正常的吗?对我来说,感觉就像它不学习!
哪一个是学习的迹象;损失,准确性或两者兼而有之?
ps:我正在使用CPU,我将尝试GPU训练以加快速度。
解决方案
您可能正在处理不平衡的数据集。当您尝试分割的结构很小(例如,占图像的 1%)时,您的网络可以有 99% 的准确度。然后,如果您的网络仅预测 0,您将获得 99% 的准确率(因为预测 99% 的“空”像素是正确的)。
您应该使用更多信息指标来跟踪您的网络性能,包括 Dice 分数。
损失在这里是一个更好的学习指标。
此外,使用 CPU 为现实生活中的任务训练 U-Net 几乎是不可能的(需要数周数月)。您应该使用 GPU 以获得良好的性能。
推荐阅读
- php - 如何在变量中使用“if”和“else”
- c# - 如何使我的控制台应用程序在不同的数据库中更可重用?
- android - 学习适用于 android 的 MVx 架构的资源
- sql - SQL Server - 每季度不同客户的运行计数
- python - Keras 从 (None,None,None,512) 重塑为 (None,None,None,None,512)?
- google-sheets - 谷歌表格数组公式:新响应的重复公式
- javascript - 在页面刷新期间使用 Jquery Cookie 存储和更新计数器变量
- javascript - Angular组件继承,保留父html
- swift - ObjectMapper - 将 JSON 字典映射为嵌套对象
- java - 定时两个Fragment中的AsyncTask onPostExecute方法在android中同时完成