Python中的SummaryWriter()函数用于生成摘要编写器
SummaryWriter() 函数是 PyTorch 中的一个类,用于生成摘要编写器。它允许用户在训练过程中记录和可视化训练相关的指标和图像等信息。主要用于监控模型的训练进程,并将结果记录到 TensorBoard 上用于后续的分析和可视化。
SummaryWriter() 具有以下常用的方法:
1. add_scalar(tag, scalar_value, global_step=None, walltime=None)
该方法用于向 TensorBoard 中添加标量值。参数 tag 表示记录的标签,scalar_value 表示要记录的值,global_step 表示记录的步数(可以用于表示不同的训练轮数或迭代次数),walltime 表示记录的时间。使用该函数可以将模型的损失值、准确率等指标记录下来,并随着训练过程进行动态展示。
2. add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None, max_bins=None)
该方法用于向 TensorBoard 中添加直方图。参数 tag 与前面相同,values 表示要记录的值,global_step、walltime 与前面相同,bins 表示直方图的分组方式,max_bins 表示最大的分组数量。使用该函数可以将模型的权重、梯度等数据分布进行可视化,有助于了解模型的参数情况。
3. add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
该方法用于向 TensorBoard 中添加图像。参数 tag 与前面相同,img_tensor 表示要记录的图像数据,global_step、walltime 与前面相同,dataformats 表示图像的数据格式。使用该函数可以将模型生成的图像或一些需要可视化的图像记录下来。
示例代码如下:
import torch
from torch.utils.tensorboard import SummaryWriter
# 创建一个 SummaryWriter 对象
writer = SummaryWriter()
# 记录标量值
for i in range(10):
writer.add_scalar('loss', i, i)
# 记录直方图
for i in range(10):
writer.add_histogram('weights', torch.randn(1000, 100), i)
# 记录图像
img = torch.randn(3, 64, 64)
writer.add_image('image', img, 0)
# 关闭 SummaryWriter 对象
writer.close()
上述代码中,首先导入了相应的库,然后创建了一个 SummaryWriter 对象。接下来,循环中使用 add_scalar() 方法记录了标量值loss,步数与值一一对应,可以通过在命令行输入 tensorboard --logdir=./logs 来查看 TensorBoard 上的可视化效果。接着,在另一个循环中使用 add_histogram() 方法记录了权重,每次迭代后不同的权重会被记录下来。最后,使用 add_image() 方法记录了一张图像。最后一步需要在命令行输入 tensorboard --logdir=./logs 来查看 TensorBoard 上的可视化效果。
综上所述,SummaryWriter() 函数为 PyTorch 提供了一个方便的接口,可以通过添加不同类型的数据,对模型的训练过程进行可视化和跟踪,从而更好地监控模型的性能和训练进度。
