python-3.x - Tensorflow 对象检测 API - 验证丢失行为

标签 python-3.x tensorflow tensorboard object-detection-api

我正在尝试使用 TensorFlow 对象检测 API 来识别图片和视频中的特定对象(吉他)。

对于数据,我从 OpenImage 数据集中下载了图像,并导出了 .tfrecord 文件。我正在使用不同的数字进行测试,但现在假设我在训练集中有 200 张图像,在评估集中有 100 张图像。

我正在使用“ssd_mobilenet_v1_coco”作为起点和“model_main.py”脚本来训练模型,以便获得训练和验证结果。

当我在 TensorBoard 中可视化训练进度时,我得到以下训练结果: TRAIN LOSS

和验证损失: VALIDATION LOSS

分别。

我对计算机视觉总体来说是新手,并且正在尝试学习,所以我试图弄清楚这些图的含义。 训练损失正如预期的那样,随着时间的推移而减少。 在我(可能很简单)的观点中,我预计验证损失将从高值开始,随着训练的进行而减少,然后如果训练持续太长时间且模型开始过度拟合,则再次开始增加。

但就我而言,我没有看到验证曲线的这种行为,它似乎基本上一直呈上升趋势(不包括波动)。

我训练模型的时间是否太短,无法看到我期望的行为?我的期望首先是错误的吗?我是否误解了曲线?

最佳答案

好的,我通过将 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/

相关文章:

machine-learning - 如何正确输入形状或输入尺寸?

machine-learning - TensorFlow PR曲线插件: pr_curve_streaming_op

tensorflow - 使用 tensorboard 时,如何总结在多个小批量上计算的损失?

python - DigitalOcean 中的 Pyopenssl 加密构建轮失败意味着什么?

python - 如何摆脱代码中的 U+200B(Unicode 零宽度空间)?

python - 在Python中更改Widget Window的样式和背景颜色

python - 将图像摘要输出到 Tensorboard

python - 用于 Python 教程的彭博 API

python - 检查向量的准确性

tensorflow - 为什么训练速度不随批大小成比例?