Tensorboard:SummaryWriter类
Tensorboard:SummaryWriter类
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参数进行了设置,功能是在文件夹后加后缀,一般其他参数都不常用。
writer.add_scalar()方法:
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=事件文件所在的文件夹名
在弹出的网址上打开即可。
保存loss曲线
选中左边“Show data download links”按钮,曲线下就有下载的按钮,保存的曲线为.svg文件,然后网页在线SVG转png或者jpg就可以了。
平滑原始loss曲线
tensorboard界面展示的曲线可以调整平滑度,如果下载下来的是原始曲线,要用到论文中可以再对svg文件处理,提取tensorboard的loss曲线平滑重画。
平滑曲线的代码网上有,后面如果自己用到我也会整理发布。
上一篇:
JS实现多线程数据分片下载