训练过程可视化

训练的目的是为了迭代出好的参数(自动)、超参数(人工)。在训练的过程中需要将注意力放到三个要素train_loss, train_acc, test_acc。如果能动态的观察训练过程中三个要素的变化,从宏观视角更本质的把握训练过程,则更利于超参数(人工)的选取和debug训练过程中出现的问题。

在实际中以epoch(训练轮数)横坐标,上面三个值为纵坐标进行描点画图,这里面涉及到两个通用的类Animator、Accumulator,二者是配合使用,下面具体分析这两个类的代码细节和用法。

Accumulator

class Accumulator:
    """For accumulating sums over `n` variables."""
    def __init__(self, n):
        """Defined in :numref:`sec_softmax_scratch`"""
        self.data = [0.0] * n

    def add(self, *args):
        self.data = [a + float(b) for a, b in zip(self.data, args)]

    def reset(self):
        self.data = [0.0] * len(self.data)

    def __getitem__(self, idx):
        return self.data[idx]

注意:这里add在代入参数的时候,要写成metric.add(1, 2)形式,不能写成metric.add((1, 2)).

In [26]: metric = Accumulator(2)

In [27]: metric
Out[27]: <__main__.Accumulator at 0x7f2e4827f820>

In [28]: metric[0]
Out[41]: 0.0

metric[1]
Out[44]: 0.0

In [29]: metric.add(1, 2)
metric[0]
Out[46]: 1.0

metric[1]
Out[47]: 2.0

zip() 函数用于将可迭

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值