• writer.add_scalar()学习


    1.写到一个类别下

    https://www.pythonheidong.com/blog/article/674750/850e5ee9aa39c1d29ff5/

    from torch.utils.tensorboard import SummaryWriter
    import numpy as np
    np.random.seed(20200910)
    writer = SummaryWriter()
    for n_iter in range(100):
        writer.add_scalar('Loss/train', np.random.random(), n_iter)
        writer.add_scalar('Loss/test', np.random.random(), n_iter)
        writer.add_scalar('Accuracy/train', np.random.random(), n_iter)
        writer.add_scalar('Accuracy/test', np.random.random(), n_iter)

    通过斜杠/来反映等级。结果:

    2.在同一个图中添加多个变量

    https://blog.csdn.net/sdnuwjw/article/details/107305358

    import numpy as np
    from torch.utils.tensorboard import SummaryWriter  # 也可以使用 tensorboardX
    # from tensorboardX import SummaryWriter  # 也可以使用 pytorch 集成的 tensorboard
    
    writer = SummaryWriter()
    for epoch in range(100):
        writer.add_scalar('add_scalar/squared', np.square(epoch), epoch)
        writer.add_scalars("add_scalars/trigonometric", 
    {'xsinx': epoch * np.sin(epoch/5), 'xcosx': epoch* np.cos(epoch/5), 'xtanx': np.tan(epoch/5)}, epoch)
    
    writer.close()

    使用writer.add_scalars()函数添加,在y轴上的类型为字典类型,可容纳多个y结果。

    3.在添加时横轴是epoch还是iteration?

    https://tensorboardx.readthedocs.io/en/latest/tutorial.html

     这里提到每个epoch可以存储loss、accuracy或学习率。但函数参数表示用的iteration。

    https://debuggercafe.com/track-your-pytorch-deep-learning-project-with-tensorboard/

    上面链接中记录的是每个epoch的损失。

    https://dl.ypw.io/how-to-use-tensorboard/

    上面链接中给出的例子,既有记录iteration的,记录单个标量:

     结果图:

     也有记录epoch的,记录多个标量:

    结果图:

    因为要统一横坐标,所以才记录的epoch,因为train和valid的样本量不同,所以batch也不同,这样就会有不同的iteration,就无法统一下标了。

    综上所述,记录epoch和iteration都可以,主要看当前的需要是什么。

  • 相关阅读:
    UPC2018组队训练赛第十二场
    ACM-ICPC 2018南京赛区网络预选赛
    UPC2018组队训练赛第十一场
    UPC2018组队训练赛第十场
    UPC2018组队训练赛第九场
    linux 用简单密码
    设置分辨率
    packstack
    rbenv
    elasticsearch
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14617515.html
Copyright © 2020-2023  润新知