AverageMeter计算并存储当前值和平均值
一个用来记录和更新变量的工具
# 1.定义类
class AverageMeter(object):
"""Computes and stores the average and current value"""
# 计算并存储平均值和当前值
def __init__(self, name, fmt=':f'):
# fmt:占位符信息 浮点数
self.name = name
self.fmt = fmt
self.reset()
def __init__(self):
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 if self.count != 0 else 0
# 将属性值插入到字符串中进行格式化
def __str__(self):
fmtstr = '{name} {val' + self.fmt + '} ({avg' + self.fmt + '})'
return fmtstr.format(**self.__dict__)
# 2.使用
# (1)初始化
losses = AverageMeter('Loss', ':.4e') # 变量名和浮点位
losses = AverageMeter()
train_accuracy = AverageMeter()
# (2)更新变量update
losses.update(loss.data.item())
train_accuracy.update(accuracy(outputs.cpu(), labels))
# (3)取平均
losses.avg
参考:
AverageMeter()的作用与使用-CSDN博客