print('Epoch: [{0}][{1}/{2}]\t'
'Lr: {lr:.6f}\t'
'Time {batch_time.val:.2f} ({batch_time.avg:.2f})\t'
'Data {data_time.val:.4f} ({data_time.avg:.4f})\t'
'Loss {loss.val:.4f} ({loss.avg:.4f})\t'.format(
epoch + 1, batch_idx + 1, len(trainloader), batch_time=batch_time,
data_time=data_time, loss=losses, lr=optimizer.param_groups[0]['lr'],
)) #rank1=rank1, mAP=mAP
代码中有写到多少batch回输出loss的以及各种,其中.val 是方差的计算,而avg是均值的计算。所以可以通过每次的输出看出这么多个batch的损失函数的变化是多少,而且可以从方差看出,这么多个batch的损失输出是不是都稳定在这个范围。通过这样的判断可以看出损失输出的判断,从而判断模型的学习情况。比如:我用了OCR的156层的输出来计算学习情况:
Epoch: [1][60/554] Lr: 0.001000 Time 0.67 (0.64) Data 0.0002 (0.0100) Loss 0.1253 (0.2844)
Epoch: [1][120/554] Lr: 0.001000 Time 0.54 (0.62) Data 0.0001 (0.0051) Loss 0.1507 (0.2735)
Epoch