我使用Mask-R-CNN来训练我的数据。当我使用TensorBoard查看结果时,我有损失, mrcnn_bbox_loss , mrcnn_class_loss , mrcnn_mask_loss , rpn_bbox_loss , rpn_class_loss 和所有相同的6个验证损失: val_loss, val_mrcnn_bbox_loss 等。
我想确切地知道每个损失是什么。
我还想知道前6次损失是火车损失还是什么?如果不是火车失窃,我怎么看火车失窃?
我的猜测是:
损失:这是摘要中的全部5个损失(但我不知道TensorBoard如何总结它)。
mrcnn_bbox_loss :边界框的大小是否正确?
mrcnn_class_loss :该课程正确吗?像素是否正确分配给类别?
mrcnn_mask_loss :实例的形状是否正确?像素正确分配给实例了吗?
rpn_bbox_loss :bbox的大小正确吗?
rpn_class_loss :bbox的类别正确吗?
但是我很确定这是不对的...
如果我只有1个班级,那么失去一些无关紧要吗?例如仅背景和另外1个课程?
我的数据只有背景和另外1个类,这是我在TensorBoard上获得的结果:
我的预测是可以的,但是我不知道为什么最终由于验证而造成的一些损失会不断上升……我认为必须首先下降,然后过度拟合。 我使用的预测是TensorBoard上出现次数最多的绿线。我不确定我的网络是否过拟合,因此我想知道为什么验证中的某些损失看起来像它们的样子...
答案 0 :(得分:1)
根据Python包索引中的code comments和documentation,这些损失定义为:
每个损耗度量是针对每个感兴趣区域分别计算的所有损耗值的总和。日志中给出的一般损失度量标准是Mask R-CNN作者定义的其他五种损失的总和(您可以通过将其总和检查)。
关于如何根据original paper计算这些损失,可以将它们描述如下(请注意,为了更直观的解释,定义非常粗糙):
正如您已经说过的那样,这些损失指标确实是训练损失,而带有 val _ 前缀的损失指标就是验证损失。验证损失的波动可能由于多种原因而发生,仅凭图表很难一见钟情。它们可能是由于学习率太高(试图找到最小值而导致随机梯度下降过冲),或验证集太小(由于输出中的微小变化会产生不可靠的损失值,导致验证值不可靠)引起的重大损失值变化)。