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都可以,主要看当前的需要是什么。

posted @ 2021-04-04 23:38  lypbendlf  阅读(5214)  评论(0编辑  收藏  举报