一、TensorBoard简介与安装
TensorBoard是一种可视化工具。在训练过程中,我们要可视化训练过程,用来监控我们当前训练的训练状态。TensorBoard是TensorFlow中强大的可视化工具,但目前PyTorch已支持TensorBoard的使用,支持标量、图像、文本、音频、视频和Eembedding等多种数据可视化。
1.TensorBoard的运行机制
- python脚本中记录可视化的数据
- 将数据存储在硬盘中,以event file的形式存储
- 在终端使用TensorBoard工具读取event file的形式数据,TensorBoard工具在Web端进行可视化
网址即为可视化后的网址
2. TensorBoard安装
在conda中直接输入pip install tensorboard
来进行安装
二、TensorBoard的使用
1.SummaryWriter
class SummaryWriter(object):
def __init__(self, log_dir=None, comment='',
purge_step=None, max_queue=10,
flush_secs=120, filename_suffix=''):
...
功能:提供创建event file的高级接口
主要属性:
- log_dir:event file输出文件夹
- comment:不指定log_dir时,文件夹后缀
- filename_suffix:event file文件名后缀
下面展示这三个参数的使用
import os
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter
log_dir = "./train_log/test_log_dir"
writer = SummaryWriter(log_dir=log_dir, comment='_scalars', filename_suffix="12345678")
for x in range(100):
writer.add_scalar('y=pow_2_x', 2 ** x, x)
writer.close()
import os
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter
log_dir = "./train_log/test_log_dir"
writer = SummaryWriter(comment='_scalars', filename_suffix="12345678")
for x in range(100):
writer.add_scalar('y=pow_2_x', 2 ** x, x)
writer.close()
主要方法:
-
add_scalar
add_scalar(tag, scalar_value, global_step=None, walltime=None)
功能:记录标量,缺点是只能记录一条曲线
- tag:标签名,唯一标识
- scalar_value:要记录的标量
- global_step:x轴
-
add_scalars()
add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)
- main_tag:标签
- tag_scalar_dict:key是变量的tag,value是变量的值
上述两个方法的使用如下:
import os
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter
max_epoch = 100
writer = SummaryWriter(comment='test_comment', filename_suffix="test_suffix")
for x in range(max_epoch):
writer.add_scalar('y=2x', x * 2, x)
writer.add_scalar('y=pow_2_x', 2 ** x, x)
writer.add_scalars('materials/scalar_group', {"xsinx": x * np.sin(x),
"xcosx": x * np.cos(x)}, x)
writer.close()
生成的事件文件为:
此时,在终端可视化后可得
点击这个网址,会使用默认浏览器打开可视化界面
-
add_histogram()
add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None)
功能:统计直方图与多分位数折线图,用于分析模型参数分布与梯度分布是非常有用的
- tag:标签名,唯一标识
- values:要统计的参数
- global_step:y轴
- bins:取直方图的bins
import os
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter(comment='test_comment', filename_suffix="test_suffix")
for x in range(2):
np.random.seed(x)
# 等差分布
data_union = np.arange(100)
# 正态分布
data_normal = np.random.normal(size=1000)
writer.add_histogram('distribution union', data_union, x)
writer.add_histogram('distribution normal', data_normal, x)
plt.subplot(121).hist(data_union, label="union")
plt.subplot(122).hist(data_normal, label="normal")
plt.legend()
plt.show()
writer.close()
在tensorboard的wed端显示:
如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!