源码:
class AverageMeter(object): """Computes and stores the average and current value""" def __init__(self, name, fmt=':f'): self.name = name self.fmt = fmt self.reset() def reset(self): self.val = 0 self.avg = 0 self.sum = 0 self.count = 0 def update(self, val, n=1): self.val = val self.sum += val * n self.count += n self.avg = self.sum / self.count def __str__(self): fmtstr = '{name} {val' + self.fmt + '} ({avg' + self.fmt + '})' return fmtstr.format(**self.__dict__)
if __name__ == "__main__": losses = AverageMeter('AverageMeter') loss_list = [0.5,0.4,0.5,0.6,1] batch_size = 2 for los in loss_list: losses.update(los,batch_size) print(losses.avg) print(losses)
总结:本质上还是对所有batch_size的损失取平均,batch_size会在计算中被消除,并没有啥用
reference:https://blog.csdn.net/qq_39783265/article/details/105398427