我使用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的类是否正确?
但我很确定这不对......
如果我只有一节课,那么有些失败是无关紧要的吗?例如只有背景和另外一个类?
我的数据只有背景和另外一个类,这是我在TensorBoard上的结果:
我的预测还可以,但我不知道为什么我的验证中的一些损失会在最后上升和下降......我认为它必须首先只是下降并且仅在过度拟合之后。我使用的预测是具有最多纪元的TensorBoard上的绿线。我不确定我的网络是否过度装配,因此我想知道为什么验证中的某些损失看起来如何...
这是我的预测:qazxsw poi qazxsw poi qazxsw poi
根据Python Package Index中的和,这些损失定义为:
这些损失度量中的每一个是针对每个感兴趣区域单独计算的所有损失值的总和。日志中给出的一般损失度量是掩码R-CNN作者定义的其他五个损失的总和(您可以通过总结它们来检查它)。
根据如何计算这些损失,它们可以描述如下(请注意,为了更直观的解释,定义非常粗略):
正如您已经说过的,这些损失度量确实是训练损失,而具有val_前缀的那些是验证损失。验证丢失的波动可能由于几种不同的原因而发生,并且很难仅根据您的图表一眼就猜出来。它们可能是由于学习率太高(使得随机梯度下降时试图找到最小值)或者验证集太小(由于输出中的微小变化会产生不可靠的损失值)巨大的损失价值变化)。