Tensorboard (1)
机器学习通常涉及在训练期间可视化和度量模型的性能。有许多工具可用于此任务。
一、介绍TensorBoard
参考文章:
https://cloud.tencent.com/developer/article/1955304
https://zhuanlan.zhihu.com/p/103630393
Tensorboard:
TensorBoard 是一组用于数据可视化的工具。它包含在流行的开源机器学习库 Tensorflow 中。TensorBoard 的主要功能包括:
- 可视化模型的网络架构
- 跟踪模型指标,如损失和准确性等
- 检查机器学习工作流程中权重、偏差和其他组件的直方图
- 显示非表格数据,包括图像、文本和音频
- 将高维嵌入投影到低维空间
1.本地启动Tensorboard
tensorboard --logdir=<directory_name> --port=<port_num>
# 打开终端或命令提示符并运行 将 directory_name 标记替换为保存数据的目录。默认是“logs”
# port_num 是访问服务器的端口号,可以指定特定的端口号,避免与其他使用者产生冲突
# 最终的地址是 <程序运行目录>/<directory_name>
Tensorboard
使用逻辑:
1.将代码运行中某些你关心的数据保存在一个文件夹中(这一步由SummaryWriter实例对象完成)
2.再读取这个文件夹中的数据,用浏览器显示出来(通过在命令行运行tensorboard完成)
2.代码实例1
# 导入 Tensorboard
from torch.utils.tensorboard import SummaryWriter
if __name__ == '__main__':
# 实例化对象
write = SummaryWriter("logs")
# y=2x
for i in range(1,100):
write.add_scalar("y=2x",2*i,i)
write.close()
运行之后,终端输入:
tensorboard --logdir=<logs> --port=6007
得到结果:
可以通过 add_scalar()
函数将 数值变换可视化出来
def add_scalar(self, tag, scalar_value, global_step=None, walltime=None)
Args:
tag (string): Data identifier (表头--名字)
scalar_value (float or string/blobname): Value to save (二维坐标系即 y 轴)
global_step (int): Global step value to record (二维坐标系即 x 轴)
walltime (float): Optional override default walltime (time.time()) with seconds after epoch of event
3.代码实例2
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
if __name__ == '__main__':
write = SummaryWriter("logs")
# 图片路径
image_path = "/home/zxz/DEEPLEARNING/DEMO/TensorBoard_1/hymenoptera_data/train/ants/0013035.jpg"
img = Image.open(image_path)
print(type(img))
# 将图片转化为 numpy.array 类型
img_array = np.array(img)
print(type(img_array))
print(img_array.shape)
write.add_image("test",img_array,1,dataformats='HWC')
write.close()
结果:
可以通过add_image()
可视化模型训练过程中的图像
df add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
Args:
tag (string): Data identifier (表头 )
img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data # (图像数据--括号后面是图像数据要求的类型)
global_step (int): Global step value to record # (训练步数: x轴)
walltime (float): Optional override default walltime (time.time()) seconds after epoch of event
Shape:
img_tensor: Default is :math:`(3, H, W)`. You can use ``torchvision.utils.make_grid()`` to
convert a batch of tensor into 3xHxW format or call ``add_images`` and let us do the job.
Tensor with :math:`(1, H, W)`, :math:`(H, W)`, :math:`(H, W, 3)` is also suitable as long as
corresponding ``dataformats`` argument is passed, e.g. ``CHW``, ``HWC``, ``HW``.
# 输入的 img_tensor 默认尺寸 (形状shape) 为 (3, H, W) , 3 通道 H为高 W为宽
# 若输入的 img_tensor 尺寸 (形状shape) 为 (H, W,3) ,H为高 W为宽 3 通道 需要添加参数 dataformats= 'HWC'