Tensorboard的使用
tensorboard的好处:
该模块以类似函数的关系建立一个可视化直线 / 图片, 有助于直观的分析数据
- 在使用前我们需要导入相应模块
from torch.utils.tensorboard import SummaryWriter
- 然后就可以实例化一个对象, 执行我们需要的行为了
writer = SummaryWriter('logs')
# 参数为最终结果导出到的文件夹名, 如果不加参数会按照默认值
下面主要介绍两种tensorboard的使用方法
1. add_scalar()方法
scalar是标量的意思, 可以理解为一个数字吧, 使用add_scalar()方法可以得到一个函数图像的数据
add_scalar(tag, scalar_value, global_step)
- tag 参数可以理解为一个标签(名字)
- scalar_value 标量值, 可以看做坐标轴的 y 值
- global_step 可以理解为 x 值
# 如下代码建立了叫做y=x的, x 与 y 值相等的图像
for val in range(100):
writer.add_scalar('y=x', val, val)
'''
生成的文件, 需要用命令行命令打开
tensorboard --logdir=log --port=6007 # port表示端口号
'''
2. add_image()方法
这里的image需要的类型是tensor或numpy类型, 而我们之前知道了如何获得PIL类型的image
- 使用numpy将PIL类型转化为numpy.array类型
import numpy as np
img_array = np.array(img_PIL) # img_array 就是我们需要的numpy类型了
add_image(tag, img_tensor, global_step, dataformats)
- tag 标签
- img_tensor 对应numpy类型的img_array
- global_step x 值
- dataformats 数据的形式
- tensor类型对应 ‘CHW’
- numpy类型对应 ‘HWC’
- C: 通道数, H: 模型的高, W: 模型的宽
# 导入图片, 用Image模块
img_PIL = Image.open('MyDataset/train/cartoon_image/000505-1640102705bfdf.jpg')
# 转化为numpy类型
img_array = np.array(img_PIL)
# 建立图像
writer.add_image('test', img_array, 1, dataformats='HWC')
最后得出图像
最后不要忘了: 关闭tensorboard ==> writer.close()
其他
add_image仅适用于batchsize为1的图片, 如果>1就需要用到add_images, 用法基本一致
其次, add_graph 用于将输入和神经网络模型间的变化流程可视化为流程图