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

Pytorch深度学习实战3-8:详解数据可视化组件TensorBoard安装与使用

目录

  • 1 什么是Tensorboard?
  • 2 Tensorboard安装
  • 3 Tensorboard可视化流程
  • 4 Tensorboard可视化实例
    • 4.1 常量可视化
    • 4.2 特征图可视化

1 什么是Tensorboard?

在深度学习领域,网络内部如同黑箱,其中包含大量的连接参数,这给人工调试造成极大的困难。Tensorboard则是神经网络的可视化工具,可以记录训练过程的数字、图像、运行图等内容,方便研究人员对训练参数进行统计,观察神经网络训练过程并指导参数优化。

在这里插入图片描述

2 Tensorboard安装

参考Anaconda安装与Python虚拟环境配置保姆级图文教程(附速查字典)创建一个实验用的虚拟环境。进入相应虚拟环境后,输入以下指令即可安装。

pip install tensorboardX
pip install tensorboard

安装完成后,进入环境

python
from torch.utils.tensorboard import SummaryWriter

若上述指令不报错即说明安装成功。

3 Tensorboard可视化流程

Tensorboard可视化过程主要为:

  • 为某次实验创建数据记录句柄

    writer = SummaryWriter(path)
    

    其中path是数据记录日志的存储路径。

  • 通过writer实例的add_xxx方法向日志写入不同类型的观察数据,主要类型有

    Scalars:在模型训练期间显示不同的有用信息
    Graphs:显示模型
    Histogram:使用直方图显示权重
    Distribution:显示权重分布
    Projector:显示主成分分析和T-SNE算法,用于降维

  • 启动Tensorboard可视化引擎

    tensorboard --logdir=<your_log_dir>
    

    其中<your_log_dir>可以是单次实验的日志所在路径,也可以是多次实验的父级目录,Tensorboard会自动横向比较各次实验曲线。

4 Tensorboard可视化实例

4.1 常量可视化

这边给大家提供一个很方便的装饰器,实现过程如下

from tensorboardX import SummaryWriter
import os, timeclass Visualizer:def __init__(self) -> None:pass@staticmethoddef visual_scale(title: str, path: str, cover: bool=True):'''* @breif: 可视化模型标量数据* @param[in]: title  -> 图表名称* @param[in]: path   -> 可视化数据存储路径* @param[in]: cover  -> 是否覆盖已有可视化数据'''def scale(func):def wrap(*args, **kwargs):writer = SummaryWriter(log_dir=Visualizer.coverFile(path, cover))result = func(*args, **kwargs)if len(result) > 0:data_num = len(result[next(iter(result))])for i in range(data_num):writer.add_scalars(title, {k: v[i] for k, v in result.items()}, i)return resultreturn wrapreturn scale

使用起来只需要一句话,注意要构造一个字典,记录将要传递给tensorboard的数据:

@visual_scale('loss', './log/fcnn')
def main(model, epochs: int, save: bool=False) -> None:# 生成优化器——随机梯度下降optimizer = torch.optim.SGD(model.parameters(), 1e-3)lossParam = {"trainLoss": [], "validLoss": []}for i in range(epochs):lossParam["trainLoss"].append(train(i, epochs, model, optimizer))lossParam["validLoss"].append(validate(i, epochs, model))if save:torch.save(model.state_dict(), r"model/{}.pth".format(model.__str__))return lossParam

在这里插入图片描述

在这里插入图片描述

4.2 特征图可视化

同样用装饰器的形式构造一个可视化卷积核的工具函数

def visual_kernal(title: str, path: str, append: bool=False):def kernal(func):def warp(*args, **kwargs):if not append and os.path.exists(path):delFiles(path)writer = SummaryWriter(log_dir=path)result = func(*args, **kwargs)try:model = kwargs['model']for name, param in model.named_parameters():if 'conv' in name.lower() and 'weight' in name:Cout, Cin, Kh, Kw = param.size()kernelAll = param.reshape(-1, 1, Kw, Kh)  # 每个通道的卷积核kernelGrid = vutils.make_grid(kernelAll, nrow=Cin)writer.add_image(f'{title}--{name}', kernelGrid, global_step=0)except:raise AttributeError("被修饰函数传入的模型不存在或参数格式有误!")return resultreturn warpreturn kernal

在这里插入图片描述


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

相关文章:

Pytorch深度学习实战3-8:详解数据可视化组件TensorBoard安装与使用

目录1 什么是Tensorboard&#xff1f;2 Tensorboard安装3 Tensorboard可视化流程4 Tensorboard可视化实例4.1 常量可视化4.2 特征图可视化1 什么是Tensorboard&#xff1f; 在深度学习领域&#xff0c;网络内部如同黑箱&#xff0c;其中包含大量的连接参数&#xff0c;这给人工…...

华为OD机试 - 旋转骰子(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:旋转骰子…...

如何做SpringBoot单元测试?

前言单元测试&#xff08;unit testing&#xff09;&#xff0c;是指对项目中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试&#xff0c;对于Java来说或者是在SpringBoot项目中&#xff0c;最小的可测试单元就是一个方法。做单元测试就是为了证明某段代码的执⾏结果是否符…...

ZZULI训练: 数组和字符串专题

ZZULI训练:数组和字符串专题ZZULI训练: 数组和字符串专题ZZULI训练:数组和字符串专题 部分多实例没写循环多次是因为在main里面循环了, 你们写的时候要加上只提供大概思路和核心代码建议多尝试一下c, 并没有想象的那么难 7-1 个位数统计 可以开个数组来存一下每个数组出现的…...

ElasticSearch如何解决深分页问题?

文章目录 前言From/Size参数Query阶段Fetch阶段深度分页问题Scroll遍历数据基本使用遍历优缺点缺点:优点:」Scroll Scan基本使用Scroll Scan与Scroll的区别Sliced ScrollSearch After基本使用基本原理优缺点总结ES7版本变...

JDK8新特性宝典

JDK8新特性 ​ Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台 课程内容的介绍 了解Java发展史Lambda表达式…...

【C++】关于C++模板的分离编译问题

文章目录1.阐述模板的实例化和重复定义问题2.分离编译可能出现的问题3.解决方法将函数模板的定义放到头文件中模板定义的位置显式实例化模板总结1.阐述模板的实例化和重复定义问题 C模板是一种非常强大的工具&#xff0c;可以为我们提供通用的代码实现方式。然鹅&#xff0c;在…...

小应用记账本-第2章-数据库设计

小应用记账本-第2章-数据库设计 在上一章《小应用记账本-第1章-需求分析》已经罗列了我们需要的功能&#xff0c;因为很简单&#xff0c;所以这一章就来设计数据库吧。 Account表&#xff1a;账户表 字段名类型说明取值idint账户idaccount_namevarchar账户名称remaining_sumd…...

Spring Boot+Vue前后端分离项目练习06之网盘项目创建vue项目

1.安装环境 构建vue项目&#xff0c;需要提前安装相应的环境&#xff0c;这里主要就是node&#xff0c;npm和Vue CLl。 #1、安装nodejs brew install nodejs #2、再执行下面命令来安装npm(npm是开发nodejs时所用的依赖库) brew install npm #3、安装vue cli npm install -g v…...

Python - 单元测试

python-单元测试1 Unittest2 Pytest3 两者区别断言方面用例执行编写规则前后置操作setUp, setUpclass, setUpmodule 区别4 实战操作unittest:pytest:1 Unittest unittest属于python的内置框架&#xff0c;支持多种自动化测试用例的编写&#xff0c;以及支持用例前置条件和后置…...

特权级那些事儿-实模式下分段机制首次出现的原因

前言&#xff1a; 操作系统的特权级模块在整个操作系统的学习中应该算的上是最难啃的了&#xff0c;提到特权级就要绕不开保护模式下的分段机制&#xff1b;如果想要彻底弄明白就要对比实模式下的分段机制有什么缺陷。这就衍生出很多问题如&#xff1a;什么是实模式&#xff1f…...

详解Vue安装与配置(2023)

文章目录一、官网下载node.js二、安装Node.js三、环境配置四、idea导入vue项目五、IDEA添加Vue.js插件一、官网下载node.js Vue是前端开发框架。搭建框架&#xff0c;首先要搭建环境。搭建Vue的环境工具&#xff1a;node.js&#xff08;JavaScript的运行环境&#xff09;&…...

TypeScript深度剖析:Vue项目中应用TypeScript?

一、前言 与link类似 在VUE项目中应用typescript&#xff0c;我们需要引入一个库vue-property-decorator&#xff0c; 其是基于vue-class-component库而来&#xff0c;这个库vue官方推出的一个支持使用class方式来开发vue单文件组件的库 主要的功能如下&#xff1a; metho…...

linux面试高级篇

题目目录1.虚拟机常用有几种网络模式&#xff1f;请简述其工作原理或你个人的理解&#xff1f;2. Dockerfile中最常见的指令是什么&#xff1f;3.docker网络模式有哪些&#xff1f;4.Kubernetes有哪些核心组件这些组件负责什么工作&#xff1f;5. Pod是什么&#xff1f;6.描述一…...

java 4 (面向对象上)

java——面向对象&#xff08;上&#xff09; 目录java——面向对象&#xff08;上&#xff09;面向对象的思想概述类的成员&#xff08;1-2&#xff09;&#xff1a;属性和方法对象的内存解析类中属性的使用类中方法的使用1.举例&#xff1a;2.声明方法&#xff1a;3.说明4.re…...

HTTP报头的2个方法

在采集网页信息的时候&#xff0c;经常需要伪造报头来实现采集脚本的有效执行 下面&#xff0c;我们将使用urllib2的header部分伪造报头来实现采集信息 方法1、 #!/usr/bin/python -- coding: utf-8 -- #encodingutf-8 #Filename:urllib2-header.py import urllib2 import…...

yolov5双目检测车辆识别(2023年+单目+双目+python源码+毕业设计)

行人识别yolov5和v7对比yolo车距源码:yolov5双目检测车辆识别(2023年单目双目python源码毕业设计)上盒岛APP&#xff0c;开线上盲盒商店http://www.hedaoapp.com/yunPC/goodsDetails?pid4132 为了提高传统遗传算法(genetic algorithm, GA)IGA优化BP网络迭代时间过长以及精度偏…...

华为OD机试题,用 Java 解【用户调度问题】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…...

根据mybatis plus注解动态创建sqlite表和表字段

根据mybatis plus注解动态创建sqlite表和表字段 启动时动态创建sqlite数据库&#xff0c;根据mybatis plus注解动态创建表。如果有新增字段&#xff0c;动态创建字段。 文章目录根据mybatis plus注解动态创建sqlite表和表字段一、初始化数据库1.系统启动时初始化数据库2.初始化…...

同步、异步ETL架构的比较

背景介绍&#xff1a; 数据的抽取&#xff0c;转换和加载 (ETL, Extract, Transform, Load) 是构建数据仓库过程中最复杂也是至 关重要的一个步骤&#xff0c;我们通常用两种办法来处理 ETL 流程: 一种是异步(Asynchronous) ETL 方式, 也称为文本文件(Flat file)方式。 另外…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

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

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

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...