在Pytorch中使用Tensorboard可视化训练过程

【在Pytorch中使用Tensorboard可视化训练过程】 https://www.bilibili.com/video/BV1Qf4y1C7kz/?share_source=copy_web&vd_source=f00bfb41b3b450c3767070ed82f30ac8

主要功能:

1.保存网络结构图

2.保存训练集的损失Loss,验证集的正确性Accuracy以及学习率变化等

3.保存训练的权重

4.保存预测图片的相关信息

使用方法:

①summarywriter来自于torch.utils.tensorboard模块中导入

from torch.utils.tensorboard import SummaryWriter

②首先需要实例化summarywriter对象,需要定义一个将tensorboard文件保存路径

在实例化后会自动创建文件 

# 实例化SummaryWriter对象
tb_writer = SummaryWriter(log_dir="runs/flower_experiment")

③想要看到模型结构图需要在实例化模型后,创建init_img,使图形进行正向传播;通过模型的正向传播得到结构图

# 实例化模型
model = resnet34(num_classes=args.num_classes).to(device)

# 将模型写入tensorboard
init_img = torch.zeros((1, 3, 224, 224), device=device)
tb_writer.add_graph(model, init_img)

通过实例化模型add_graph函数将模型和初始图片传入

④在每个训练的epoch之后,在验证完模型后,会保存当前轮数的训练集平均损失Loss和验证集的Accuracy以及learning rate

# add loss, acc and lr into tensorboard
print("[epoch {}] accuracy: {}".format(epoch, round(acc, 3)))
tags = ["train_loss", "accuracy", "learning_rate"]
tb_writer.add_scalar(tags[0], mean_loss, epoch)
tb_writer.add_scalar(tags[1], acc, epoch)
tb_writer.add_scalar(tags[2], optimizer.param_groups[0]["lr"], epoch)

⑤添加预测图片,使用add_figure将结果保存为图片存储

if fig is not None:
    tb_writer.add_figure("predictions vs. actuals",
        figure=fig,
        global_step=epoch)

⑥添加直方图,使用add_histogram

tb_writer.add_histogram(tag="conv1",
        values=model.conv1.weight,
        global_step=epoch)

效果:

展示的网络架构图,按层显示

 values可以传入很多格式,包括torch.tensor,numpy.array,string,blockname

打开方式:

结果保存于事先设定的路径

在终端进入路径,或在文件夹按住shift和鼠标右键打开终端

在终端输入命令,需要加一个后面的参数打开指定数目的图片,否则会显示默认值

tensorboard.exe --logdir=./ --samples_per_plugin=images=50

显示信息:

scalars中的显示信息

images中的显示信息

可以看到随着训练预测的结果越来越精准

 graphs中保存每一个网络层结构中的信息

histogram中保存的为直方图

横坐标数值,纵坐标对应出现的次数,在中间分布最密集,随着不断迭代次数会变

点击左侧overlay切换

 在distributions中展示权重变换

使用PyTorch可视化TensorBoard的步骤如下: 1. 安装TensorBoard ``` pip install tensorboard ``` 2. 在PyTorch中创建SummaryWriter对象 ```python from torch.utils.tensorboard import SummaryWriter # 创建SummaryWriter对象 writer = SummaryWriter('runs/experiment_name') ``` 其中,`experiment_name`为实验名称,可以自定义。这里通过`runs`目录来存储实验数据。 3. 在训练或验证的过程中添加可视化代码 在代码中使用`writer.add_scalar()`方法来添加可视化代码,方法的参数包括要可视化的变量名、变量值和步数。例如: ```python # 添加训练损失 writer.add_scalar('Train/Loss', loss.item(), step) # 添加验证准确率 writer.add_scalar('Validation/Accuracy', accuracy, step) ``` 4. 启动TensorBoard 在命令行中使用以下命令启动TensorBoard: ``` tensorboard --logdir runs ``` 其中,`--logdir`参数指定实验数据所在的目录。在上面的代码中,我们将实验数据保存在`runs`目录下。 5. 在浏览器中查看可视化结果 在浏览器中输入以下地址查看TensorBoard可视化结果: ``` http://localhost:6006/ ``` 这里是一个可视化变量曲线的代码示例: ```python import torch from torch.utils.tensorboard import SummaryWriter # 创建SummaryWriter对象 writer = SummaryWriter('runs/experiment_name') # 创建模拟数据 x = torch.linspace(-5, 5, 100) y = torch.sin(x) # 可视化曲线 for i in range(100): writer.add_scalar('Sin(x)', y[i], i) # 关闭SummaryWriter对象 writer.close() ``` 这段代码将生成一条正弦曲线,并将其可视化TensorBoard中。在TensorBoard中,我们可以选择`Scalars`选项卡来查看变量曲线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值