用于自定义对象检测的Tensorflow输出

2024-05-31 23:49:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是使用tensorflow的新手。为什么我在训练自定义tensorflow 2.x对象检测时会得到这么多度量

Use fn_output_signature instead
INFO:tensorflow:Step 100 per-step time 8.507s
I0607 17:52:10.328038 16488 model_lib_v2.py:699] Step 100 per-step time 8.507s
INFO:tensorflow:{'Loss/classification_loss': 21.313017,
 'Loss/localization_loss': 2.1917934,
 'Loss/regularization_loss': 221.82864,
 'Loss/total_loss': 245.33345,
 'learning_rate': 0.014666351}
I0607 17:52:10.349220 16488 model_lib_v2.py:700] {'Loss/classification_loss': 21.313017,
 'Loss/localization_loss': 2.1917934,
 'Loss/regularization_loss': 221.82864,
 'Loss/total_loss': 245.33345,
 'learning_rate': 0.014666351}
Use fn_output_signature instead
INFO:tensorflow:Step 100 per-step time 8.507s
I0607 17:52:10.328038 16488 model_lib_v2.py:699] Step 100 per-step time 8.507s
INFO:tensorflow:{'Loss/classification_loss': 21.313017,
 'Loss/localization_loss': 2.1917934,
 'Loss/regularization_loss': 221.82864,
 'Loss/total_loss': 245.33345,
 'learning_rate': 0.014666351}
I0607 17:52:10.349220 16488 model_lib_v2.py:700] {'Loss/classification_loss': 21.313017,
 'Loss/localization_loss': 2.1917934,
 'Loss/regularization_loss': 221.82864,
 'Loss/total_loss': 245.33345,
 'learning_rate': 0.014666351}

Tags: pyinfomodeltimelibtensorflowstepv2
1条回答
网友
1楼 · 发布于 2024-05-31 23:49:39

从直觉上讲,损失“引导”模型走向正确的学习轨迹。如果一项任务没有损失,你的模型将不会因擅长该任务而获得任何奖励,因此培训可能不会使你的模型擅长该任务。按照这种逻辑,如果您的模型需要正确处理多件事情才能成功,那么您可以对每个任务的损失进行汇总

这就是日志中发生的情况:在每个步骤中,总损失是分类损失、本地化损失和正则化损失的总和。这意味着您的模型关心所有三个对象的分类、定位,以及尽可能简单地保持模型参数(正则化)。将总损失降至最低要求将所有三种损失降至最低

在实践中,您甚至可以将单个损失乘以常数,然后再求和,以赋予它们相对重要性,这样您的模型就有动力使用比其他模型稍大的乘数来优化损失:

total_loss = alpha*classification_loss + beta*localization_loss + gamma*regularization_loss

这里,alphabetagamma的值将是您选择的重要权重

相关问题 更多 >