我正在尝试使用 TensorFlow 对象检测 API 来识别图片和视频中的特定对象(吉他)。
对于数据,我从 OpenImage 数据集中下载了图像,并导出了 .tfrecord 文件。我正在使用不同的数字进行测试,但现在假设我在训练集中有 200 张图像,在评估集中有 100 张图像。
我正在使用“ssd_mobilenet_v1_coco”作为起点和“model_main.py”脚本来训练模型,以便获得训练和验证结果。
当我在 TensorBoard 中可视化训练进度时,我得到以下训练结果:
分别。
我对计算机视觉总体来说是新手,并且正在尝试学习,所以我试图弄清楚这些图的含义。 训练损失正如预期的那样,随着时间的推移而减少。 在我(可能很简单)的观点中,我预计验证损失将从高值开始,随着训练的进行而减少,然后如果训练持续太长时间且模型开始过度拟合,则再次开始增加。
但就我而言,我没有看到验证曲线的这种行为,它似乎基本上一直呈上升趋势(不包括波动)。
我训练模型的时间是否太短,无法看到我期望的行为?我的期望首先是错误的吗?我是否误解了曲线?
最佳答案
好的,我通过将 initial_learning_rate 从 0.004 降低到 0.0001 来解决这个问题。
考虑到验证损失的剧烈波动,这是一个显而易见的解决方案,但起初我认为它不起作用,因为配置文件中似乎已经有一个学习率调度程序。
但是,紧接着下面(在配置文件中)有一个 num_steps 选项,并且指出
# Note: The below line limits the training process to 200K steps, which we
# empirically found to be sufficient enough to train the pets dataset. This
# effectively bypasses the learning rate schedule (the learning rate will
# never decay). Remove the below line to train indefinitely.
老实说,我不记得我是否注释掉了 num_steps 选项...如果我没有,似乎我的学习率保持在初始值 0.004,结果是太高了。
如果我确实将其注释掉(以便学习调度程序处于事件状态),我猜它不会减少,而是从过高的值开始。
不管怎样,它现在工作得好多了,我希望如果有人遇到同样的问题,这会很有用。
关于python-3.x - Tensorflow 对象检测 API - 验证丢失行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58203837/