使用TensorBoard可视化训练过程

【卷积神经网络】构建对CIFAR-100数据集中的图像进行分类的CNN 参考: Cifar100 TensorFlow高精度调参记录 cifar算法动物园(各类网络解决cifar分类) pytorch实现cifar100的 各类网络结构 前言:  CIFAR-100数据集的网络 网上的版本很多,有些跑起来也还可以,但是大多数都只能到40-50%左右的正确率。  有大佬做了各种网络,调好了参数,能达到80%左右的正确率。但是这里只是个小作业,希望用不要太复杂,不要太深的网络,最好在一小时内就能看到结果的,所以参照大佬的作品写了简化版本,能在50个epoch内达到60%左右正确 阅读详情

一,可视化训练过程

训练过程的可视化在深度学习模型训练中扮演着重要的角色。学习的过程是一个优化的过程,我们需要找到最优的点作为训练过程的输出产物。
希望可视化loss,输入数据(尤其是图片)、模型结构、参数分布等,这些对于我们在debug中查找问题来源非常重要(比如输入数据和我们想象的是否一致)。
TensorBoard作为一款可视化工具能够满足上面提到的各种需求。TensorBoard由TensorFlow团队开发,最早和TensorFlow配合使用,后来广泛应用于各种深度学习框架的可视化中来。

1,安装

在已安装PyTorch的环境下使用pip安装即可,也可以使用PyTorch自带的tensorboard工具,此时不需要额外安装tensorboard。

pip install tensorboardX

2,可视化逻辑

可以将TensorBoard看做一个记录员,它可以记录我们指定的数据,包括模型每一层的feature map,权重,以及训练loss等等。TensorBoard将记录下来的内容保存在一个用户指定的文件夹里,程序不断运行中TensorBoard会不断记录,记录下的内容可以通过网页的形式加以可视化。

3,配置与启动

在使用TensorBoard前,我们需要先指定一个文件夹供TensorBoard保存记录下来的数据。然后调用tensorboard中的SummaryWriter作为上述记录员:

from tensorboardX import SummaryWriter

writer = SummaryWriter('./runs')

上面的操作实例化SummaryWritter为变量writer,并指定writer的输出目录为当前目录下的"runs"目录。也就是说,之后tensorboard记录下来的内容都会保存在runs。

如果使用PyTorch自带的tensorboard,则采用如下方式import:

from torch.utils.tensorboard import SummaryWriter

是否可以手动往runs文件夹里添加数据用于可视化,或者把runs文件夹里的数据放到其他机器上可视化呢?答案是可以的。只要数据被记录,你可以将这个数据分享给其他人,其他人在安装了tensorboard的情况下就会看到你分享的数据。

启动tensorboard也很简单,在命令行中输入

tensorboard --logdir=/path/to/logs/ --port=xxxx

其中“path/to/logs/“是指定的保存tensorboard记录结果的文件路径(等价于上面的“./runs”,port是外部访问TensorBoard的端口号,可以通过访问ip:port访问tensorboard,这一操作和jupyter notebook的使用类似。如果不是在服务器远程使用的话则不需要配置port。

有时,为了tensorboard能够不断地在后台运行,也可以使用nohup命令或者tmux工具来运行tensorboard。

4,模型结构可视化

首先定义模型结构:

import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(in_channels=3,out_channels=32,kernel_size = 3)
        self.pool = nn.MaxPool2d(kernel_size = 2,stride = 2)
        self.conv2 = nn.Conv2d(in_channels=32,out_channels=64,kernel_size = 5)
        self.adaptive_pool = nn.AdaptiveMaxPool2d((1,1))
        self.flatten = nn.Flatten()
        self.linear1 = nn.Linear(64,32)
        self.relu = nn.ReLU()
        self.linear2 = nn.Linear(32,1)
        self.sigmoid = nn.Sigmoid()

    def forward(self,x):
        x = self.conv1(x)
        x = self.pool(x)
        x = self.conv2(x)
        x = self.pool(x)
        x = self.adaptive_pool(x)
        x = self.flatten(x)
        x = self.linear1(x)
        x = self.relu(x)
        x = self.linear2(x)
        y = self.sigmoid(x)
        return y

model = Net()
print(model)

输出如下:

Net(
  (conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1))
  (pool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (conv2): Conv2d(32, 64, kernel_size=(5, 5), stride=(1, 1))
  (adaptive_pool): AdaptiveMaxPool2d(output_size=(1, 1))
  (flatten): Flatten(start_dim=1, end_dim=-1)
  (linear1): Linear(in_features=64, out_features=32, bias=True)
  (relu): ReLU()
  (linear2): Linear(in_features=32, out_features=1, bias=True)
  (sigmoid): Sigmoid()
)

可视化模型的思路就是给定一个输入数据,前向传播后得到模型的结构,再通过TensorBoard进行可视化,使用add_graph:

writer.add_graph(model, input_to_model = torch.rand(1, 3, 224, 224))
writer.close()

结果如下:
在这里插入图片描述

5,图像可视化

可视化方法:

  • 对于单张图片的显示使用add_image
  • 对于多张图片的显示使用add_images
  • 有时需要使用torchvision.utils.make_grid将多张图片拼成一张图片后,用writer.add_image显示
    例程:使用torchvision的CIFAR10数据集为例
import torchvision
from torchvision import datasets, transforms
from torch.utils.data import DataLoader

transform_train = transforms.Compose(
    [transforms.ToTensor()])
transform_test = transforms.Compose(
    [transforms.ToTensor()])

train_data = datasets.CIFAR10(".", train=True, download=True, transform=transform_train)
test_data = datasets.CIFAR10(".", train=False, download=True, transform=transform_test)
train_loader = DataLoader(train_data, batch_size=64, shuffle=True)
test_loader = DataLoader(test_data, batch_size=64)

images, labels = next(iter(train_loader))
 
# 仅查看一张图片
writer = SummaryWriter('./pytorch_tb')
writer.add_image('images[0]', images[0])
writer.close()
 
# 将多张图片拼接成一张图片,中间用黑色网格分割
# create grid of images
writer = SummaryWriter('./pytorch_tb')
img_grid = torchvision.utils.make_grid(images)
writer.add_image('image_grid', img_grid)
writer.close()
 
# 将多张图片直接写入
writer = SummaryWriter('./pytorch_tb')
writer.add_images("images",images,global_step = 0)
writer.close()

6,连续变量可视化

TensorBoard可以用来可视化连续变量(或时序变量)的变化过程,通过add_scalar实现:

writer = SummaryWriter('./pytorch_tb')
for i in range(500):
    x = i
    y = x**2
    writer.add_scalar("x", x, i) #日志中记录x在第step i 的值
    writer.add_scalar("y", y, i) #日志中记录y在第step i 的值
writer.close()

如果想在同一张图中显示多个曲线,则需要分别建立存放子路径(使用SummaryWriter指定路径即可自动创建,但需要在tensorboard运行目录下),同时在add_scalar中修改曲线的标签使其一致即可:

writer1 = SummaryWriter('./pytorch_tb/x')
writer2 = SummaryWriter('./pytorch_tb/y')
for i in range(500):
    x = i
    y = x*2
    writer1.add_scalar("same", x, i) #日志中记录x在第step i 的值
    writer2.add_scalar("same", y, i) #日志中记录y在第step i 的值
writer1.close()
writer2.close()

7,参数分布可视化

当我们需要对参数(或向量)的变化,或者对其分布进行研究时,可以方便地用TensorBoard来进行可视化,通过add_histogram实现。下面给出一个例子

import torch
import numpy as np

# 创建正态分布的张量模拟参数矩阵
def norm(mean, std):
    t = std * torch.randn((100, 20)) + mean
    return t
 
writer = SummaryWriter('./pytorch_tb/')
for step, mean in enumerate(range(-10, 10, 1)):
    w = norm(mean, 1)
    writer.add_histogram("w", w, step)
    writer.flush()
writer.close()

8,服务器端使用TensorBoard

一般情况下,我们会连接远程的服务器来对模型进行训练,但由于服务器端是没有浏览器的(纯命令模式),因此,我们需要进行相应的配置,才可以在本地浏览器,使用tensorboard查看服务器运行的训练过程。 本文提供以下几种方式进行,其中前两种方法都是建立SSH隧道,实现远程端口到本机端口的转发,最后一种方法适用于没有下载Xshell等SSH连接工具的用户。
MobaXterm:
在MobaXterm点击Tunneling
选择New SSH tunnel,我们会出现以下界面
在这里插入图片描述
1,对新建的SSH通道做以下设置,第一栏我们选择Local port forwarding,< Remote Server>我们填写localhost,< Remote port>填写6006,tensorboard默认会在6006端口进行显示,我们也可以根据 tensorboard --logdir=/path/to/logs/ --port=xxxx的命令中的port进行修改,< SSH server> 填写我们连接服务器的ip地址,填写我们连接的服务器的用户名,填写端口号(通常为22),< forwarded port>填写的是本地的一个端口号,以便我们后面可以对其进行访问。

2,设定好之后,点击Save,然后Start。在启动tensorboard,这样我们就可以在本地的浏览器输入http://localhost:6006/对其进行访问了

xshell:
1,Xshell的连接方法与MobaXterm的连接方式本质上是一样的,具体操作如下:
2,连接上服务器后,打开当前会话属性,会出现下图,我们选择隧道,点击添加

在这里插入图片描述

3,按照下方图进行选择,其中目标主机代表的是服务器,源主机代表的是本地,端口的选择根据实际情况而定。
4,启动tensorboard,在本地127.0.0.1:6006 或者 localhost:6006进行访问
SSL:
1,该方法是将服务器的6006端口重定向到自己机器上来,我们可以在本地的终端里输入以下代码:其中16006代表映射到本地的端口,6006代表的是服务器上的端口

ssh -L 16006:127.0.0.1:6006 username@remote_server_ip

2,在服务上使用默认的6006端口正常启动tensorboard

tensorboard --logdir=xxx --port=6006

3,在本地的浏览器输入地址

127.0.0.1:16006 或者 localhost:16006

其实TensorBoard的逻辑还是很简单的,它的基本逻辑就是文件的读写逻辑,写入想要可视化的数据,然后TensorBoard自己会读出来。

注:本文参与DataWhale-深入浅出pytorch小组学习项目!

使用Tenserboard可视化深度学习训练过程 在深度学习训练的过程中,如果能够可视化一些过程的变化,比如loss的变化过程等,将会对模型的性能表现有更加清晰的认识。 目前, 最常用的深度学习训练过程可视化工具是tensorboard,这个是tensorflow配套的可视化工具,但是Pytorch目前也支持该工具。 下面讲下如何使用该工具来进行训练过程的可视化。 安装 一般来讲如果配置好了Pytorch的深度学习环境,直接用pip安装即可: pip install tensorboard 使用 总得来说tensorboard的使用过程 阅读详情

相关推荐

Keras使用TensorBoard可视化训练过程

添加关键代码 在模型训练语句中添加回传训练信息的代码 # 每隔一个训练循环就用柱状图显示信息 callbacks = [keras.callbacks.TensorBoard(log_dir='自定义日志保存目录'.format(模型名称))] history = fashion_model.fit(训练集, 标签, epochs, batch_size, validation_split = 0...

Loy Fan 2145

一些深度学习训练过程可视化以及绘图工具

VisualDL是PaddlePaddle的可视化分析工具,提供各种图表来显示参数的趋势,并可视化模型结构、数据样本、张量直方图、PR曲线、ROC曲线和高维数据分布。为了实现这些可视化,需要在训练循环中添加代码来记录相应的数据(例如,损失值、准确率、权重等),然后使用合适的可视化工具来展示这些数据。这个工具通常提供了一个简单易用的界面,允许用户通过图形界面选择和排列不同的层(如卷积层、池化层、全连接层等),从而设计和展示他们的网络架构。然而,它更多的是用于可视化和设计,而不直接涉及网络的实际训练和测试。

qq_49370210的博客 1万+

TensorBoard:训练过程可视化

TensorBoard:训练过程可视化

qq_40107571的博客 1021

pytorch训练过程可视化(Visdom)

文章目录Visdom介绍Visdom安装Visdom训练测试过程 Visdom介绍 在训练深度学习网络的时候,小伙伴尝试对训练过程可视化很多都会用tensorboard或者tensorboardx,但是这些是针对tensorflow设计的。对于pytorch的用户,使用该包之前还要安装tensorflow ,而且训练过程的loss不能动态的查看,在本文钟将介绍FaceBook开发的一款开源数据可视化工具Visdom。Visdom因其简单易用的特点,很快成为pytorch的一个数据可视化的工具。除了用来显示l

欢迎大家来到新嬉皮士的世界 5815

TNS-12516及ORA-12516错误解决

在客户端进行sqlplus连接报错如下: ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序 在/home/oracle/product/10.2.0/db_1/network/log/listener.log中查看到错误如下: TNS-12516: TNS:listener could not find available handler with matchin

KEL 2万+

LVGL仪表盘实战:5分钟用lv_meter打造汽车仪表UI(附完整代码)

本文详细介绍了如何使用LVGL的lv_meter组件在5分钟内构建专业汽车仪表盘UI。从环境配置、刻度定制到指针动画和性能优化,提供完整代码示例和实战技巧,帮助开发者快速实现嵌入式设备上的高效仪表盘设计。

k5l6m的博客 414

TensorBoard可视化训练过程入门

TensorBoard作为一款可视化工具能够满足上面提到的各种需求。TensorBoard由TensorFlow团队开发,最早和TensorFlow配合使用,后来广泛应用于各种深度学习框架的可视化中来。

weixin_40280870的博客 1900

基于Matlab/Simulink的三相并网逆变器dq阻抗扫频仿真与理论建模实践指南

本文详细介绍了基于Matlab/Simulink的三相并网逆变器dq阻抗扫频仿真与理论建模实践方法。通过搭建仿真模型、设计扰动注入策略和FFT分析,精确提取阻抗特性,有效预测系统稳定性,为新能源并网系统设计提供可靠指导。

gold的博客 775

【Keras】TensorBoard:训练过程可视化

有时,你希望查看模型训练过程中各个参数的变化情况(例如损失函数 loss 的值)。虽然可以通过命令行输出来查看,但有时显得不够直观。而 TensorBoard 就是一个能够帮助我们将训练过程可视化的工具。 一、实时查看参数变化情况 首先在代码目录下建立一个文件夹(如 ./tensorboard )存放 TensorBoard 的记录文件,并在代码中实例化一个记录器: summary_writer = tf.summary.create_file_writer('./tensorboard') # 参

qq_36643449的博客 1481

QT+SOEM主站协议库实战指南—从编译到嵌入式应用

本文提供了一份QT与SOEM开源EtherCAT主站协议库的集成实战指南。详细介绍了在Windows和Linux平台下编译SOEM库的步骤,并讲解了如何将其无缝集成到QT项目中,构建具备实时监控与控制功能的工业上位机应用。内容涵盖从环境搭建、核心协议开发到嵌入式部署与优化的全流程,为开发高性价比、自主可控的工业控制解决方案提供完整路径。

u6v7w8x的博客 437

FPGA 学习系列(2):Verilog 语法基础

Verilog 由门级建模数据流建模行为建模门级建模(Gate Level Modeling):使用基本逻辑门描述电路,接近硬件物理结构。数据流建模(Data Flow Modeling):使用assign语句进行组合逻辑建模,类似数学方程式。行为建模(Behavioral Modeling):使用always代码块和if-elsecase等控制语句建模,抽象程度较高。Verilog 代码一般由模块(module)组成,每个模块描述一个独立的硬件功能。

Azperk的博客 987

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

主要用途是将一个标量值记录到 TensorBoard 中,以便在训练或评估模型时可视化模型的性能指标或其他相关数值。

qq_52902529的博客 590

诠视MR眼镜Unity开发设置_Unity2020.3.38

请按照如下设置Android SDK 和 Gradle。打包前先将Unity切换到Android模式。Preferences 设置。

m0_71932574的博客 599

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

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

m0_61595251的博客 620

冗余位技术在SAR ADC中的动态误差恢复机制解析

本文深入解析了冗余位技术在SAR ADC中的动态误差恢复机制,详细介绍了其基本概念、动态误差产生原因及冗余位的容错空间设计、时序松弛策略和数字校正算法。通过实际电路设计案例和数学建模,展示了冗余位技术如何显著提升ADC的精度和能效比,同时探讨了未来发展方向。

weixin_28335283的博客 973

最新2026年《网络数据安全风险评估办法》条款解读

大型企业集团IT变革下的零信任安全体系建设方案(55页).pptx。以数据安全为核心的安全立体防御体系解决方案(41页).pptx。让数据安全合规地创造价值(15页 PPT).pptx。大型集团数据安全应急预案(57页).docx。数据安全治理与评估服务业务介绍.pptx。数据安全管理实践(17页).pptx。大数据安全架构设计方案.pptx。大数据安全规划总体方案.pptx。数据库安全综合治理方案.pptx。医疗数据安全建设方案.pptx。数据安全框架规划图.pptx。数据安全治理方案.pptx。

cdfunlove的博客 46

Pytorch可视化(四)之训练过程可视化TensorBoard

当我们的实验变得复杂(对比不同超参数、观察深层梯度)时,Matplotlib 的静态绘图就显得捉襟见肘。TensorBoard 作为深度学习领域事实上的标准可视化工具,能为我们提供动态、交互式的实验追踪。

typical_yyc的博客 1639

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【Pytorch学习】TensorBoard 可视化模型,以及训练过程

【Pytorch学习】TensorBoard 可视化模型,以及训练过程 1,TensorBoard 设置与写入 现在,我们将设置 TensorBoard,从torch.utils导入tensorboard并定义SummaryWriter,这是将信息写入 TensorBoard 的关键对象。 #首先定义模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.co.

AI知识搬运工 2641

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

基于tensorboard的模型训练过程可视化

2018年9月14日笔记 阅读本文的前提是已经阅读《基于tensorflow的一元二次方程回归预测》,文章链接:https://www.jianshu.com/p/b27860402fe3 本文使用tensorboard对一元二次方程回归预测的模型训练过程做可视化展现。 0.编程环境 安装tensorflow命令:pip install tensorflo...

潇洒坤 2159

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

PyTorch可视化 | 可视化网络结构 | 使用TensorBoard可视化训练过程

PyTorch可视化

liujiesxs的博客 4477

pytorch tensorboard_pytorch使用tensorboard实现训练过程的可视化

本文主要介绍了pytorch实现训练过程可视化的两种方法,tensorboard或tensorboardX,同时介绍了常见错误command not found: tensorboard的解决方法。方法一:通过tensorboard实现复制文件logger.py至自己的项目目录下在项目下建立tensorboard文件夹,存放可视化训练过程中产生的中间文件。在代码中声明tf_logger = Log...

weixin_39581099的博客 304

使用tensorboard可视化训练过程

1、pytorch官方例子pytorch官方例子 2、常用代码 from torch.utils.tensorboard import SummaryWriter # 实例化SummaryWriter对象 tb_writer = SummaryWriter(log_dir="runs/flower_experiment") #log_dir文件路径,如果没有runs/flower_experiment这个文件路径,他会自动创建并生成 # 将模型写入tensorboard

taylorman的博客 1135

PyTorch中使用TensorBoard可视化模型、数据和训练过程

在 60 分钟闪电战中,我们向您展示了如何加载数据,通过我们定义为 nn.Module 子类的模型提供数据,在训练数据上训练这个模型,并在测试数据上测试它。 为了了解发生了什么,我们在模型训练时打印出一些统计数据,以了解训练是否在进行。 但是,我们可以做得比这更好:PyTorch 与 TensorBoard 集成,这是一种用于可视化神经网络训练运行结果的工具。 本教程使用 Fashion-MNIST 数据集说明了它的一些功能,该数据集可以使用 torchvision.datasets 读入 PyTorch。

wolaiyeptx的博客 2790

tensorlow中tensorboard可视化展示训练过程

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data max_steps=1000 # 训练步数 learning_rate=0.001 # 设置学习率 dropout=0.9 # 神经元保留比例 data_dir='./MNIST_data' # 数据存放路径 # minist...

扶着老奶奶闯红灯 2153
上一篇: PyTorch可视化
下一篇: PyTorch的生态简介
Alexa2077
博客等级 码龄7年 839粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值