TensorFlow 对象检测 API 损失急剧增加

Posted

技术标签:

【中文标题】TensorFlow 对象检测 API 损失急剧增加【英文标题】:Tensorflow object detection API loss increases dramatically 【发布时间】:2021-10-20 08:25:59 【问题描述】:

我正在使用自己的数据训练 tensorflow 对象检测 API,但由于某种原因,所有损失似乎都飙升了数千步。你可以在这张图上看到:

一开始它应该会下降,但不知何故它会爆炸。

我使用的模型是带有预训练 coco 检查点的 ssd_resnet50_v1_fpn 但此信息可能无关紧要,因为我认为任何模型都会发生这种情况(我已经尝试了 2 个模型,每个模型都尝试了几次,目前所有模型的行为都是相同的我的尝试)。我正在按照本教程 https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html 对其进行训练,因此我使用 model_main_tf2.py 脚本来训练模型。

很奇怪的是,我的一个同事没有这个问题。正如您在此处看到的,他的损失演变似乎很正常:

他为我提供了运行训练所需的所有文件(例如 tf.records、labelmap.txt、pipeline.config 文件、ckpt-0.index 等)。他可能很幸运,而我不是。但是很奇怪,每次他运行它时,他的行为都是正常的,而我没有……至少发生这种情况的几率非常低。

不知道是否重要,但我有 GeForce RTX 3060 Ti,Python:3.9.6,Tensorflow:2.5.0,Cudnn:8.1.1 和 Cuda:11.2 而他拥有 Geforce GTX 1650 Super,Python:3.9.6,Tensorflow:2.5.1,Cudnn:8.1.0 和 Cuda:11.2

知道是什么原因造成的吗?

编辑 1:我重新运行了它,而我的计算机上什么也没做,它运行得很好。它现在显示了预期的行为。我会在正常使用它时重新运行它(也许看视频或其他东西),这是我在最后一次运行时所做的,显示出奇怪的行为,看看这种奇怪的行为是否再次发生。您认为这可能是导致这种行为的原因吗?

【问题讨论】:

【参考方案1】:

我也会遇到同样的问题。在不同数量的数千步之后,损失就会爆炸。我也不确定问题的原因。

在我看来,这可能是 GPU 问题或数据有问题。但那时我应该至少完成一次。如果您在这方面取得任何进展,请告诉我:)

【讨论】:

感觉学习率跟这个有很大关系。在上面的例子中,我没有改变推荐的学习率,而是改变了批大小(我使用了 2 的批大小,这没有多大意义,但在遇到内存问题之前我不能超过这个值)。如果您将学习率更改为较小的值(基本上我将批量大小除以 64,所以我将学习率除以相同的数量)您将不再有这种行为。但这并不能解释一切,因为我的朋友只是运行批量大小 1 并保持学习率不变,从未遇到过这个问题

以上是关于TensorFlow 对象检测 API 损失急剧增加的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow keras fit - 准确性和损失都急剧增加

在使用 TensorFlow Object Detection API 训练 Mask RCNN 时,“损失”是啥?

为啥 Keras 损失在第一个 epoch 之后急剧下降?

TensorFlow Object Detection目标检测模型训练时Loss急剧上升直至为NAN

TensorFlow 对象检测 API 中未检测到任何内容

具有奇怪检测结果的 TensorFlow 对象检测 api