Tensorboard在训练模型时很有用,可以看训练过程中loss的变化。之前用于Tensorflow框架,自Pytorch1.1之后,Pytorch也加了这个功能。
SummaryWriter类可以在指定文件夹生成一个事件文件,这个事件文件可以对TensorBoard解析。
找到所在环境pip安装即可:pip install tensorboard
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter()
def __init__(self, log_dir=None, comment='', purge_step=None, max_queue=10,
flush_secs=120, filename_suffix=''):
官方示例:
# create a summary writer with automatically generated folder name.
writer = SummaryWriter()
# folder location: runs/May04_22-14-54_s-MacBook-Pro.local/
# create a summary writer using the specified folder name.
writer = SummaryWriter("my_experiment")
# folder location: my_experiment
# create a summary writer with comment appended.
writer = SummaryWriter(comment="LR_0.1_BATCH_16")
# folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/
第1个示例是说默认的存储文件夹:runs/…
第2个示例是保存在指定文件夹中,参数为文件夹名;
第3个实例是保存在默认文件夹中,然后对comment参数进行了设置,功能是在文件夹后加后缀,一般其他参数都不常用。
def add_scalar(
self,
tag,
scalar_value,
global_step=None,
walltime=None,
new_style=False,
double_precision=False,
):
上面是官方定义的参数,这个方法是添加标量的意思。
Args:
tag (string): Data identifier
scalar_value (float or string/blobname): Value to save
global_step (int): Global step value to record
walltime (float): Optional override default walltime (time.time())
with seconds after epoch of event
new_style (boolean): Whether to use new style (tensor field) or old
style (simple_value field). New style could lead to faster data loading.
tag:所画图标的title,str类型,注意引号
scalar_value:需要保存的数值,对应y轴的y值
global_step:全局的步数,对应x轴
在PyCharm中,找到项目所在的terminal,
tensorboard --logdir=事件文件所在的文件夹名
在弹出的网址上打开即可。
选中左边“Show data download links”按钮,曲线下就有下载的按钮,保存的曲线为.svg文件,然后网页在线SVG转png或者jpg就可以了。
tensorboard界面展示的曲线可以调整平滑度,如果下载下来的是原始曲线,要用到论文中可以再对svg文件处理,提取tensorboard的loss曲线平滑重画。
平滑曲线的代码网上有,后面如果自己用到我也会整理发布。