TensorBoard——Pytorch版使用(附带案例演示)

TensorBoard是一个用于可视化机器学习实验结果的工具,可以帮助我们更好地理解和调试训练过程中的模型。

在PyTorch中,我们可以使用TensorBoardX库来与TensorBoard进行交互。TensorBoardX是一个PyTorch的扩展,它允许我们将PyTorch的训练中的关键指标和摘要写入TensorBoard的事件文件中。

一、TensorBoard的使用步骤:

下面是使用TensorBoardX进行可视化的一些常见步骤:

1. 安装TensorBoard

确保你已安装TensorBoard。对于PyTorch用户,TensorBoard也可以独立安装:

pip install tensorboard

2. 在你的代码中配置TensorBoard

使用PyTorch时,你可以通过`torch.utils.tensorboard`模块来使用TensorBoard。首先,导入`SummaryWriter`来记录事件:

from torch.utils.tensorboard import SummaryWriter

# 初始化SummaryWriter
writer = SummaryWriter('runs/experiment_name')

然后,在你的训练循环中,使用`writer.add_scalar`等方法来记录你感兴趣的信息,例如损失和准确率:

for epoch in range(num_epochs):
    # 训练模型...
    loss = ...
    accuracy = ...
    
    # 记录损失和准确率
    writer.add_scalar('Loss/train', loss, epoch)
    writer.add_scalar('Accuracy/train', accuracy, epoch)

# 关闭writer
writer.close()

3. 在PyCharm中启动TensorBoard

接下来,有两种方法在PyCharm中查看TensorBoard:

方案一使用Terminal

1. 打开PyCharm的Terminal。
2. 导航到你的项目目录。
3. 使用以下命令启动TensorBoard:

tensorboard --logdir=runs/

在这要注意一点:pycharm终端默认使用的是base环境,所以终端前面会显示PS,需要进入项目所使用的环境中才可执行tensorboard --logdir=runs/,具体如何操作点击这里。否则会出现如下报错:

方案二:配置PyCharm运行配置

1. 在PyCharm中,点击右上角的“Add Configuration”。
2. 点击"+",选择"Python"。
3. 在"Script path"中,找到并输入`tensorboard`的执行文件路径。
4. 在"Parameters"字段中,输入`--logdir=runs/`,确保路径与你的TensorBoard日志目录匹配。
5. 保存配置,然后你可以通过点击运行按钮来启动TensorBoard。

 4. 浏览TensorBoard

在TensorBoard启动后,通过浏览器访问TensorBoard界面,你可以看到损失、准确率、图像示例等多种类型的日志信息,这些都可以帮助你分析和改进你的模型。

小提示

  • 当使用PyTorch时,`SummaryWriter`的路径(例如`runs/experiment_name`)定义了TensorBoard日志的存储位置。确保每次实验使用不同的名称,以便在TensorBoard中清晰地区分它们。
  • 利用TensorBoard的高级特性,如图像、图表和直方图记录,可以提供更多关于模型训练过程和结果的洞察。

二、案例演示

步骤1: 创建PyTorch模型

首先,我们定义一个简单的线性回归模型。

import torch
import torch.nn as nn
import numpy as np
from torch.utils.tensorboard import SummaryWriter

# 定义模型
class LinearRegressionModel(nn.Module):
    def __init__(self):
        super(LinearRegressionModel, self).__init__()
        self.linear = nn.Linear(1, 1)  # 输入和输出都是1维

    def forward(self, x):
        return self.linear(x)

步骤2: 训练模型并记录日志

接着,我们将准备数据、定义损失函数和优化器,并在训练循环中使用SummaryWriter来记录损失:

# 准备数据
x_train = np.array([[3.3], [4.4], [5.5], [6.71], [6.93], [4.168], 
                    [9.779], [6.182], [7.59], [2.167], 
                    [7.042], [10.791], [5.313], [7.997], [3.1]], dtype=np.float32)

y_train = np.array([[1.7], [2.76], [2.09], [3.19], [1.694], [1.573], 
                    [3.366], [2.596], [2.53], [1.221], 
                    [2.827], [3.465], [1.65], [2.904], [1.3]], dtype=np.float32)

x_train = torch.from_numpy(x_train)
y_train = torch.from_numpy(y_train)

# 初始化模型
model = LinearRegressionModel()

# 损失和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 初始化SummaryWriter
writer = SummaryWriter('runs/linear_regression_experiment')

# 训练模型
num_epochs = 100
for epoch in range(num_epochs):
    # 转换为tensor
    inputs = x_train
    targets = y_train

    # 前向传播
    outputs = model(inputs)
    loss = criterion(outputs, targets)

    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    # 记录损失
    writer.add_scalar('Loss/train', loss.item(), epoch)

    if (epoch+1) % 10 == 0:
        print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')

# 关闭SummaryWriter
writer.close()

步骤3: 在PyCharm中启动TensorBoard

(训练开始或完成之后)按照之前的指导,在PyCharm中使用Terminal或配置运行配置来启动TensorBoard。确保TensorBoard的--logdir参数设置为runs/,与SummaryWriter的初始化路径一致。

这里采用Terminal的方案:

步骤4: 观察TensorBoard

点击生成的链接http://localhost:6006/即可查看结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/439620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Vue的兴趣活动推荐APP的设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术简介 3 1.1 框架 3 1.1.1 Spring MVC 3 1.1.2 Spring框架 3 1.1.3 MyBatis框架 3 1.1.4 VUE框架 3 1.2 开发语言 3 1.2.1 JAVA 3 1.2.2 JavaScript 4 1.3 设计模式 4 1.4 数据库 4 2 可行性分析 5 2.1 社会可行性 5 2.2 经济可行…

Extended Feature Pyramid Network for SmallObject Detection

摘要 各种尺度的特征耦合会削弱小对象的性能,本文中,我们提出了具有超高分辨率金字塔的扩展特征金字塔网络(EFPN ),专门用于小目标检测。具体来说,我们设计了一个新模块,称为特征纹理转移&#…

《Effective Modern C++》- 极精简版 5-14条

本文章属于专栏《业界Cpp进阶建议整理》 继续上篇《Effective Modern C》- 极精简版 1-4条。本文列出《Effective Modern C》的5-14条的个人理解的极精简版本。 Item5、优先考虑auto而非显示类型声明 auto的优势: 强制变量初始化在返回部分场景,会返回一…

释机器学习中的召回率、精确率、准确率

精确率和召回率又被叫做查准率和查全率,可以通过P-R图进行表示 如何理解P-R(精确率-召回率)曲线呢?或者说这些曲线是根据什么变化呢? 以逻辑回归举例,其输出值是0-1之间的数字。因此,如果我们想要判断用户的好坏&…

如何做好【沟通】管理

目录 管理的定义 管理的四大职能: 四共团队: 领导力: 沟通的四种类型听、说、读、写(计划、报告) 沟通四原则 思维框架:结构树报告 管理的定义 彼得.德鲁克:管理通过他人去完成任务的学…

基于java SSM图书管理系统简单版设计和实现

基于java SSM图书管理系统简单版设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

c++ 11 新特性 不同数据类型之间转换函数之const_cast

一.不同数据类型之间转换函数const_cast介绍 const_cast是C11中引入的一种类型转换操作符,用于修改类型的const或volatile属性。const_cast的主要用途是移除对象的常量性,它是唯一具有此能力的C风格的转型操作符。在C11中,const_cast可以完成…

Linux安装,配置,启动HBase

Linux安装,配置,启动HBase 一、HBase安装,配置 1、下载HBase安装包 Hbase官方下载地址: http://archive.apache.org/dist/hbase 选择相应的版本点击下载,这里以2.3.5为例 # linux可以通过wget命令下载 wget https://archive…

如何解决Firefox提示“此网站可能不支持TLS1.2协议”的问题 错误代码:SSL_ERROR_UNSUPPORTED_VERSION

1.问题描述 当你在Firefox浏览器中访问一个网站时,可能会遇到这样的提示:   之后,不停地刷新或 重新输入,怎么也访问不进去?? 2.解决步骤 按照以下步骤操作,可以降低Firefox对TLS版本的要求…

HEUFT电源维修x-ray发生器维修HBE211226

HEUFT电源维修x-ray发生器维修HBE211253;海富HEUFT在线液位检测X射线发生器维修,不限型型号系列。 德国海富推出HEUFT在线液位检测装置,满瓶检测系统HEUFT有着强大的功能,它的模块机构能整合很多程序,并依据不同的产品及其包装特性,照相技术,高频技术或X-ray技术。…

[eslint error] ‘v-model‘ should be on a new line.

错误详情 错误原因 此问题是由于.eslintrc.js文件中的vue/max-attributes-per-line配置错误产生的 esline默认要求属性单独开一行 错误解决 所以解决的方法有两个一个是遵从eslint默认规则让属性新开一行,能解决问题 但是我不喜欢看这样子的代码,所以我只好去改掉eslint的规…

声强和能量及其praat操作

强度、声压、能量、功率 这是我们在电学和声学等领域较常见到的词汇,但有时候可能会搞混淆,所以再整理一下。 强度(intensity) 强度,也叫做声强(Sound intensity)。《声学基础》中对于声强的…

Unity 关节:铰链、弹簧、固定、物理材质:摩檫力、 特效:拖尾、

组件-物理-关节:铰链(类似门轴) 自动动作、多少力可以将其断开、 弹簧可以连接另一个刚体(拖动即可) 固定一般是等待一个断裂力,造成四分五裂的效果。 物理材质 设置摩檫力,则可以创造冰面的…

K8S之实现业务的金丝雀发布

如何实现金丝雀发布 金丝雀发布简介优缺点在k8s中实现金丝雀发布 金丝雀发布简介 金丝雀发布的由来:17 世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;当瓦斯…

redis缓存(穿透, 雪崩, 击穿, 数据不一致, 数据并发竞争 ), 分布式锁(watch乐观锁, setnx, redission)

redis的watch缓存机制 WATCH 机制原理: WATCH 机制:使用 WATCH 监视一个或多个 key , 跟踪 key 的 value 修改情况,如果有key 的 value 值在事务 EXEC 执行之前被修改了,整个事务被取消。EXEC 返回提示信息,表示 事务已…

蓝桥杯——矩形拼接

矩形拼接 题目分析 对于一个矩形而言,我可以把它横着放,而可以把它竖着放,比如下图, 3个矩形的拼接情况可以通过在纸上画图模拟出来,情况有以下三种 ​ 图1 图3是4条边,即四边形。观察一下什么时候会是四…

邮件api有哪些作用?使用API发邮件的方法?

邮件api接口发信的流程?如何使用邮件API发送邮件? 在现代的数字化社会,电子邮件成为了人们日常生活和工作中不可或缺的一部分。为了提高邮件处理的效率和自动化程度,邮件API的应用越来越广泛。那么,邮件API究竟有哪些…

FMEA视角下的未来:拥抱变化,探索无限可能!

在快速发展的现代社会中,预测未来变得越来越具有挑战性。FMEA(失效模式与影响分析)作为一种预防性质量工具,虽然主要用于评估产品设计或过程中的潜在故障,但其核心理念——识别风险、预防失误,同样适用于我…

使用anaconda管理多python版本环境

anaconda使用 安装 下载地址 miniconda anaconda 两者区别 Miniconda只包含了conda和Python,以及一些必要的依赖项,它的安装文件较小,占用空间较少,用户可以根据需要自行安装其他的包。Anaconda包含了conda、Python和超过150…

Android应用界面

概述:由于学校原因,估计会考,曹某人就浅学一下。 View概念 安卓中的View是所有UI控件的基类,它代表着屏幕上的一个矩形区域,用于展示数据和接收用户事件。 UI控件的基础:在Android开发中,Vie…