pytorch 之数据可视化
损失函数(Loss Function),在机器学习和深度学习中也常被称为代价函数(Cost Function),是一种衡量模型预测值与实际值之间差异的函数。损失函数的核心作用是为模型训练提供反馈,指导模型参数的优化过程。
tensorboard 是一个 pytorch 下的可视化工具,我们可以使用 tensorboard 来绘制损失函数。
1 安装 tensorboard,并导入 SummaryWriter 类。
进入当前虚拟环境
pip install tensorboard
from torch.utils.tensorboard import SummaryWriter
2 使用 SummaryWriter 类创建实例,三步走!
- 创建
SummaryWriter实例 - 记录数据
- 关闭
SummaryWriter
😎:补充
SummaryWriter 是 PyTorch 中 torch.utils.tensorboard 模块的一个类,它用于与 TensorBoard 交互,允许你将训练过程中的各种数据写入到日志文件中。这些数据可以包括
标量 add_scalar、图像 add_image、直方图 add_histogram、嵌入式向量 add_embedding 等
from torch.utils.tensorboard import SummaryWriter
_#1.创建 SummaryWriter 实例,指定日志文件的保存目录_
writer = SummaryWriter('runs/experiment_1')
_#2.记录数据_
for epoch in range(100):
loss = ... _假设这是计算得到的损失值_
writer.add_scalar('Loss/train', loss, epoch) _这里采用add.scalar记录标量数据,参数分别为图像名称、横轴数值、纵轴数值_
_记录图像数据_
if epoch % 10 == 0:
image = ... _假设这是要记录的图像数据_
writer.add_image('Image/train', image, epoch)
_#3.关闭 SummaryWriter,关闭 SummaryWriter 以确保所有数据都被正确写入日志文件_
writer.close()
注意事项:
- 日志目录:
SummaryWriter的构造函数中指定的目录用于存放日志文件,TensorBoard 会读取这个目录下的日志文件进行可视化。 - 线程安全:
SummaryWriter不是线程安全的,如果你在多线程环境中使用,需要确保适当的同步控制。 - 资源管理:确保在训练结束后调用
close()方法,以释放资源并确保数据完整写入。
3 如何打开事件文件,打开图片
tensorboard --logdir="logs" --port=6007(改端口)
4 实例一:绘制 y=x 图像(add_scalar)
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs") _#创建SummaryWriter实例,并指定日志路径_
_#下面绘制一个最简单的y=x的图像_
for i in range(1,1000):
writer.add_scalar("y=x",i,i)
writer.close()
5 实例二:绘制图片(add_image)
函数原型
SummaryWriter.add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
参数
- tag:字符串,用于在 TensorBoard 中标识图像的名称。
- img_tensor**(torch.Tensor, numpy.ndarray, or string/blobname)**:一个形状为
(C, H, W)或(B, C, H, W)的张量,其中C是通道数,H是高度,W是宽度,B是批处理大小。图像数据可以是浮点数或整数,但需要在 0 到 1(浮点数)或 0 到 255(整数)的范围内。 - global_step:(可选)整数,表示当前的训练步骤。这有助于在 TensorBoard 中跟踪图像随训练过程的变化。
- walltime:(可选)以秒为单位的时间戳,表示记录的时间点。
- dataformats:(可选)字符串,指定张量的形状格式。默认是
'CHW',表示通道、高度、宽度的顺序。对于批量图像,可以是'BCHW'或'NCHW'
实例代码
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer = SummaryWriter("logs") _#创建SummaryWriter实例,并指定日志路径_
image_path = "dataset/train/ants_image/0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
writer.add_image("test",img_array,1,dataformats='HWC') ##注意图片格式需要标注
_#下面绘制一个最简单的y=x的图像_
for i in range(1,1000):
writer.add_scalar("y=x",i,i)
writer.close()
1060

被折叠的 条评论
为什么被折叠?



