TensorBoard使用

TensorBoard

TensorBoard是TensorFlow中强大的可视化工具,其运行机理过程如下。
首先python脚本用SummaryWriter记录可视化的数据,接下来数据将以event file形式被存储至硬盘中,之后在命令行启动tensorboard并指定数据存储位置,每隔30s的时间(可自己设定)读取硬盘指定存储位置中的数据在web端做出展示。

SummaryWriter

功能:提供创建event file的高级接口

主要属性

  • log_dir:event file输出文件夹,如果不指定,就在当前目录创建一个名为runs的文件夹,文件夹里面还有文件夹,再下一级才是event file。
  • comment:不指定log_dir时,文件夹后缀,就是runs里面的文件夹后缀
  • filename_suffix:event file文件名后缀

实例

writer = SummaryWriter(log_dir=log_dir, comment='_scalars', filename_suffix="666")

主要方法

add_scalar()

功能:记录标量
主要参数

  • tag:图像的标签名
  • scalar_value:要记录的标量
  • global_step:x轴

一般x轴上是epoch数,要记录的标量最典型的是loss。但是这个函数的缺点是只能监控一个标量,绘制一种曲线,不能绘制多个曲线。
实例如下

writer.add_scalar('y=2x', x * 2, x)
writer.add_scalar('y=pow_2_x', 2 ** x, x)

add_scalars()

主要参数

  • main_tag:该图的标签
  • tag_scalar_dict:key是变量的tag,value是变量的值,这是一个字典形式的参数

实例如下

writer.add_scalars('data/scalar_group', {"xsinx": x * np.sin(x),
                                         "xcosx": x * np.cos(x)}, x)

add_histogram()

功能:统计直方图与多分位数折线图
主要参数

  • tag:图像标签名,唯一标识
  • values:要统计的参数,通常统计权值偏置或者梯度
  • global_step:y轴
  • bins:取直方图的bins,一般默认就可以

实例如下

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)

训练时使用实例

# 记录数据,保存于event file
writer.add_scalars("Loss", {"Train": loss.item()}, iter_count)
writer.add_scalars("Accuracy", {"Train": correct / total}, iter_count)

# 每个epoch,记录梯度,权值
for name, param in net.named_parameters():
	writer.add_histogram(name + '_grad', param.grad, epoch)
	writer.add_histogram(name + '_data', param, epoch)

add_graph()

功能:可视化模型计算图
主要参数

  • model:必须是nn.Module
  • input_to_model:给模型的数据,模型接收的数据
  • verbose:是否打印计算图的结构信息,默认false

使用实例

input_data = torch.randn(3, 3, 32, 32)
net = LeNet(classes=2)
writer.add_graph(net, input_data)

你可能感兴趣的:(pytorch学习笔记)