当前位置: 首页 > news >正文

【深度学习实验】TensorBoard使用教程【SCALARS、IMAGES、TIME SERIES】

文章目录

  • 一、环境
  • 二、TensorBoard
    • 1. 使用TensorBoardX
      • a. 安装TensorBoardX
      • b. 使用示例
    • 2. PyTorch内置的TensorBoard
    • 3. 启动TensorBoard服务
  • 三、实战
    • 1. SCALARS(标量)
      • 找不同
        • 关卡1
        • 关卡2
        • 关卡3
        • 关卡4
      • Show data download links
      • Ignore outliers in chart scaling
      • Smoothing
      • Horizontal Axis
        • STEP(迭代次数)
        • RELATIVE(相对值)
        • WALL(时间)
      • Runs
    • 2. IMAGES(图像)
      • Show actual image size
      • Brightness adjustment
      • Contrast adjustment
      • Runs
      • 查看不同step
    • 3. TIME SERIES
  • 四、报错
    • 1. AttributeError: module 'PIL.Image' has no attribute 'ANTIALIAS'
      • 解决方案
    • 2. TypeError: Descriptors cannot be created directly.
      • 解决方案

一、环境

conda create -n DL python==3.11
conda activate DL
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
conda install jupyter
conda install matplotlib TensorBoard
conda install tensorboardX

二、TensorBoard

1. 使用TensorBoardX

  TensorBoardX 是一个可以在PyTorch中使用TensorBoard的第三方库,可以使用它来记录训练过程中的损失、准确率、模型参数直方图等信息,并在TensorBoard中进行可视化展示。

a. 安装TensorBoardX

conda install tensorboardX

pip install tensorboardX

b. 使用示例

在PyTorch中使用TensorBoardX来记录训练过程中的损失:

from tensorboardX import SummaryWriter# 创建一个SummaryWriter对象,指定记录日志的目录
writer = SummaryWriter('logs')for epoch in range(num_epochs):# 在训练循环中记录损失writer.add_scalar('Train/Loss', train_loss, epoch)# 训练结束后关闭SummaryWriter
writer.close()

2. PyTorch内置的TensorBoard

  从PyTorch 1.2版本开始,PyTorch也增加了内置的TensorBoard支持:可以使用torch.utils.tensorboard.SummaryWriter来记录训练过程中的信息,方法与上面的示例类似。

from torch.utils.tensorboard import SummaryWriter

3. 启动TensorBoard服务

  使用下述格式命令来启动TensorBoard(默认端口6006):

tensorboard --logdir=path_to_your_logs

例:

 tensorboard --logdir=./Norm --port=6005

日志文件保存目录为Norm,TensorBoard将运行在6005端口上

在这里插入图片描述

三、实战

# Create a SummaryWriter for logging information to TensorBoard
writer = SummaryWriter()for epoch in range(num_epochs):print('Starting epoch {}...'.format(epoch), end=' ')# Iterate through the data loaderfor i, (images, labels) in enumerate(data_loader):step = epoch * len(data_loader) + i + 1real_images = Variable(images).to(device)labels = Variable(labels).to(device)generator.train()d_loss = 0# Perform multiple discriminator training stepsfor _ in range(n_critic):d_loss = discriminator_train_step(len(real_images), discriminator,generator, d_optimizer, criterion,real_images, labels,device)# Perform a single generator training stepg_loss = generator_train_step(batch_size, discriminator, generator, g_optimizer, criterion, device)# Write the losses to TensorBoardwriter.add_scalars('scalars', {'g_loss': g_loss, 'd_loss': (d_loss / n_critic)}, step)  # Display sample images at certain stepsif step % display_step == 0:generator.eval()z = Variable(torch.randn(9, 100)).to(device)labels = Variable(torch.LongTensor(np.arange(9))).to(device)sample_images = generator(z, labels).unsqueeze(1)grid = make_grid(sample_images, nrow=3, normalize=True)writer.add_image('sample_image', grid, step)print('Done!')
  • 数据格式:

    • 默认:
      在这里插入图片描述
    • 重命名
      在这里插入图片描述
  • 终端输入:

 tensorboard --logdir=./Norm

在这里插入图片描述

  点击上述链接(浏览器中输入http://localhost:6006),打开TensorBoard的网页界面:

在这里插入图片描述

  当使用TensorBoard对深度学习模型进行可视化时,常用的功能包括 Scalars(标量)、Images(图像)和Time Series(时间序列):

1. SCALARS(标量)

  Scalas 在 TensorBoard 中用于呈现训练过程中的标量值,例如损失函数值、准确率、学习率等。

  • 通过 Scalars 功能,可以观察这些标量值随着训练步骤的变化而变化的趋势图;
  • 可以同时对比多个标量,以便分析它们之间的关系和趋势。

找不同

关卡1

在这里插入图片描述
在这里插入图片描述

关卡2

toggle y-axis log scale(切换 Y 轴对数刻度)
在这里插入图片描述

关卡3

Alt+Scroll to Zoom(Alt+鼠标滚动以缩放)
在这里插入图片描述

在这里插入图片描述

关卡4

fit domain to data(说人话就是:缩放后一键复原)
在这里插入图片描述

Show data download links

在这里插入图片描述
在这里插入图片描述
开启下载~
在这里插入图片描述

Ignore outliers in chart scaling

在这里插入图片描述

Smoothing

曲线平滑:
在这里插入图片描述

Horizontal Axis

STEP(迭代次数)

在这里插入图片描述

RELATIVE(相对值)

在这里插入图片描述

WALL(时间)

在这里插入图片描述
在这里插入图片描述

Runs

选择要显示的数据(左面方框多选,右面圆圈单选):
(对比实验结果)
在这里插入图片描述
在这里插入图片描述

2. IMAGES(图像)

  Images 功能可用于显示模型生成的图像,以及模型中间层的激活值、过滤器等图片信息。

  • 可以通过 Images 功能观察训练过程中生成的样本图片;
  • 也可以通过可视化中间层的特征图像,从而更好地理解模型的学习过程和特征提取能力。

Show actual image size

显示实际图像尺寸
在这里插入图片描述
在这里插入图片描述

Brightness adjustment

亮度调节
在这里插入图片描述
在这里插入图片描述

右侧RESET恢复默认值

Contrast adjustment

对比度调整
在这里插入图片描述
在这里插入图片描述

Runs

选择
在这里插入图片描述

查看不同step

滑动~
在这里插入图片描述

3. TIME SERIES

  合并上述内容
在这里插入图片描述

四、报错

1. AttributeError: module ‘PIL.Image’ has no attribute ‘ANTIALIAS’

在这里插入图片描述

解决方案

在pillow的10.0.0版本中,ANTIALIAS方法被删除了,使用新的方法即可:

Image.LANCZOS
Image.Resampling.LANCZOS

在这里插入图片描述

2. TypeError: Descriptors cannot be created directly.

TypeError: Descriptors cannot be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:1. Downgrade the protobuf package to 3.20.x or lower.2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

在这里插入图片描述
protobuf的版本太高~

解决方案

conda install tensorboard 
## Package Plan ##environment location: E:\Software\anaconda3\envs\DLadded / updated specs:- tensorboardThe following packages will be downloaded:package                    |            build---------------------------|-----------------werkzeug-2.3.8             |  py311haa95532_0         445 KB  defaults------------------------------------------------------------Total:         445 KBThe following NEW packages will be INSTALLED:protobuf           anaconda/pkgs/main/win-64::protobuf-3.20.3-py311hd77b12b_0werkzeug           anaconda/pkgs/main/win-64::werkzeug-2.3.8-py311haa95532_0Proceed ([y]/n)?

在这里插入图片描述

相关文章:

【深度学习实验】TensorBoard使用教程【SCALARS、IMAGES、TIME SERIES】

文章目录 一、环境二、TensorBoard1. 使用TensorBoardXa. 安装TensorBoardXb. 使用示例 2. PyTorch内置的TensorBoard3. 启动TensorBoard服务 三、实战1. SCALARS(标量)找不同关卡1关卡2关卡3关卡4 Show data download linksIgnore outliers in chart sc…...

渗透测试(12)- WireShark 网络数据包分析

目录 1、WireShack 简介 2、WireShark 基本使用方法 3、 WireShack 抓包分析 3.1 Hypertext Transfer Protocol (应用层) 3.2 Transmission Control Protocol (传输层) 3.3 Internet Protocol Version 4(网络层) 3.4 Ethernet Il (链路层): 数据链路层以太网头部信息 …...

XSS_Labs靶场通关笔记

每一关的方法不唯一;可以结合源码进行分析后构造payload; 通关技巧(四步): 1.输入内容看源码变化; 2.找到内容插入点; 3.测试是否有过滤; 4.构造payload绕过 第一关 构造paylo…...

基于本地缓存制作一个分库分表的分布式ID生成器

引言: 代码在 https://gitee.com/lbmb/mb-live-app 中 【mb-live-id-generate-provider】 模块里面 如果喜欢 希望大家给给star 项目还在持续更新中。 背景介绍 项目整体架构是 基于springboot 3.0 开发 rpc 调用采用 dubbo 注册配置中心 使用 nacos 采用shardin…...

美易平台:金融市场的晴雨表与创新服务的融合

在金融市场中,利率的微妙变动往往预示着经济活动的脉动,而美国纽约联储发布的最新数据显示,上个交易日(1月25日)担保隔夜融资利率(SOFR)小幅上升至5.32%,而同期有效的联邦基金利率保…...

文旅项目包括什么?

文旅项目是指与文化和旅游相结合的项目,旨在通过提供丰富的文化体验和旅游服务来吸引游客,促进地方经济发展。 文旅项目通常包括多个方面,以下是对每块内容的详细介绍: 文化旅游景区:这类项目以展示人类文化和历史遗产…...

Pointnet++改进优化器系列:全网首发AdamW优化器 |即插即用,实现有效涨点

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入AdamW优化器,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步...

stm32 FOC 电机介绍

今年开始学习foc控制无刷电机,这几天把所学整理一下,记录一下知识内容。 前言: 为什么要学习FOC? 1.电机控制是自动化控制领域重要一环。 2.目前直流无刷电机应用越来越广泛,如无人机、机械臂、云台、仿生机器人等等。 需要什么基础&…...

【Linux】进程通信——管道

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 🌎推荐文章:【LeetCode】winter vacation training 目录 📋进程通信的目的📋管道匿名管道pipe函数创…...

3d gaussian splatting笔记(paper部分翻译)

本文为3DGS paper的部分翻译。 基于点的𝛼混合和 NeRF 风格的体积渲染本质上共享相同的图像形成模型。 具体来说,颜色 𝐶 由沿射线的体积渲染给出: 其中密度 𝜎、透射率 𝑇 和颜色 c 的样本是沿着射线以…...

TCP 三次握手以及滑动窗口

TCP 三次握手 简介: TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的 “ 连接” ,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。 TCP 可以…...

Vue3 Cli5按需导入ElementPlus

1、安装环境 node:16.20.0 vue:3.2.36 vue/cli:5.0.0 element-plus:2.2.25 element-plus/icons-vue:2.0.10 unplugin-auto-import:0.16.1 // 当前环境用这个包,不然会提示各种错误 unplugin-vu…...

playwright自动化项目搭建

具备功能 关键技术: pylaywright测试库pytest单元测试框架pytest-playwright插件 非关键技术: pytest-html插件pytest-rerunfailures插件seldom 测试框架 实现功能: 元素定位与操作分离失败自动截图并保存到HTML报告失败重跑可配置不同…...

mysql字符集

一、查看字符集 //查看数据库字符集 SHOW CREATE DATABASE databasename; //查看表字符集 SHOW CREATE TABLE tablename; //查看指定表全部字段字符集 show full columns from table; 二、修改字符集 将超出utf8字符集范围的字符比如𪨧插入到utf8字符集的字…...

Elasticsearch:聊天机器人、人工智能和人力资源:电信公司和企业组织的成功组合

作者:来自 Elastic Jrgen Obermann, Piotr Kobziakowski 让我们来谈谈大型企业人力资源领域中一些很酷且改变游戏规则的东西:生成式 AI 和 Elastic Stack 的绝佳组合。 现在,想象一下大型电信公司的典型人力资源部门 — 他们正在处理一百万件…...

[AIGC大数据基础] Flink: 大数据流处理的未来

Flink 是一个分布式流处理引擎,它被广泛应用于大数据领域,具有高效、可扩展和容错的特性。它是由 Apache 软件基金会开发和维护的开源项目,并且在业界中受到了广泛认可和使用。 文章目录 什么是 FlinkFlink 的特点真正的流处理高性能和低延迟…...

数据结构之线性表(一般的线性表)

前言 接下来就开始正式进入数据结构环节了,我们先从线性表开始。 线性表 线性表(linear list)也叫线性存储结构,即数据元素的逻辑结构为线性的数据表,它是数据结构中最简单和最常用的一种存储结构,专门存…...

uniapp安卓android离线打包本地打包整理

离线打包准备 下载Android studio 1.准备资源hbuilder 2.准备离线SDK 最新android平台SDK下载最新android平台SDK下载 3.离线打包key申请 4.直接导入HBuilder-Integrate-AS工程,直接运行simpleDemo项目即可 5.安装java 1.8 jdk-8u151-windows-x64 6.遇到这个报错报错Caus…...

vmware安装centos8-stream

VMware与CentOS8-stream的配置教程【2022-9-5】_centos stream 8-CSDN博客 启动进入后配置网络,/etc/sysconfig/network-scripts/网卡 vmware上的centos8没有网络_主机时wifi上网,centos 8 安装后无法连接网络 解决办法-CSDN博客 centos8配置网络_centos8网络配置…...

使用HttpServletRequestWrapper解决web项目request数据流无法重复读取的问题

在做web项目开发时,我们有时候需要做一些前置的拦截判断处理,比如非法参数校验,防攻击拦截,统一日志处理等,而请求参数如果是form表单提交还好处理;对于json这种输入流的数据就会有问题,统一处理…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...