深度学习——TensorBoard的使用

官方文档torch.utils.tensorboard — PyTorch 2.3 documentation

TensorBoard简介

TensorBoard是一个可视化工具,它可以用来展示网络图、张量的指标变化、张量的分布情况等。特别是在训练网络的时候,我们可以设置不同的参数(比如:权重W、偏置B、卷积层数、全连接层数等),使用TensorBoader可以很直观的帮我们进行参数的选择。它通过运行一个本地服务器,来监听6006端口。在浏览器发出请求时,分析训练时记录的数据,绘制训练过程中的图像。

TensorBoard 是Google开发的一个机器学习可视化工具。其主要用于记录机器学习过程,例如:

  • 记录损失变化、准确率变化
  • 记录图片变化、语音变化、文本变化等,例如在做GAN时,可以过一段时间记录一张生成的图片
  • 绘制模型

TensorBoard下载

 pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple

TensorBoard的使用

Pytorch使用Tensorboard主要用到了三个API:

SummaryWriter:这个用来创建一个log文件,TensorBoard面板查看时,也是需要选择查看那个log文件。
add_something: 向log文件里面增添数据。例如可以通过add_scalar增添折线图数据,add_image可以增添图片。
close:当训练结束后,我们可以通过close方法结束log写入。

接下来,我们来模拟记录训练过程中准确率的变化。

首先需要new一个SummaryWriter对象:

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter('logs')

当运行完该行代码后,可以看到当前目录下生成了一个logs文件夹,并且里面有event日志

此时已经可以在终端启动tensorboard来查看了:

 tensorboard --logdir=logs --port=6007

SummaryWriter中一些子类函数的使用

1.add_scalar():添加标量到SummaryWriter中

(1)参数详解

  • tag(string): Data的指定方式,图表的标题

  • scalar(float or string/blobname): 需要存储的数值

  • global_step(int): 训练的步数(Global step value to record),结合scalar,那就是训练到多少步的时候scalar的数值是多少。

  • walltime(float): (不常用参数,可选)Optional override default walltime(time.time()) with seconds after epoch of event

更直观的参数解释,可以表示为下图的方式:

(2)代码

from torch.utils.tensorboard import SummaryWriter

writer=SummaryWriter("logs")  #将事件文件存储到logs这个文件夹底下

#绘制一个y=2x的图像
for i in range(100):
    writer.add_scalar("y=x",2*i,i)  # writer.add_scalar(图像标题,y轴,x轴)
writer.close()

2.add_image():添加image到SummaryWriter

(1)参数详解

  • tag(string): Data的指定方式,图表的标题

  • img_tensor(torch.Tensor, numpy.array, or string/blobname): 图像数据

  • global_step(int): 训练的步数(Global step value to record),结合img_tensor,那就是训练到多少步的时候img_tensor的图像是什么。

  • walltime(float): (不常用参数,可选)Optional override default walltime(time.time()) with seconds after epoch of event

默认输入图像数据形状:

  • (3, H, W):三通道,高,宽

  • 注意:如果输入数据为 (H, W, 3) 也是可以的,但是需要设置dataformats,如dataformats='HWC'

(2)代码

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter('logs')
image_path = 'img_data/train/ants_image/5650366_e22b7e1065.jpg'
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)

print(type(img_array))
print(img_array.shape)
writer.add_image('test', img_array,2, dataformats="HWC")

writer.close()

3.add_images():添加image到SummaryWriter

add_images(tag, img_tensor, global_step=None, walltime=None, dataformats='NCHW')

参数

  • tag(string) -数据标识符

  • img_tensor(torch.Tensor,numpy.array, 或者字符串/blob 名称) -图像数据

  • global_step(int) -要记录的全局步长 值

  • walltime(float) -事件纪元后的可选覆盖默认 walltime (time.time()) 秒

  • dataformats(string) -NCHW、NHWC、CHW、HWC、HW、WH等形式的图像数据格式规范。

将批量图像数据添加到摘要中。

请注意,这需要pillow 包。

形状:

img_tensor:默认为(N,3,W,H) 。如果指定dataformats,则接受其他形状。例如NCHW 或 NHWC。

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 准备的测试数据集
test_data = torchvision.datasets.CIFAR10(root='./dataset', train=False, transform=torchvision.transforms.ToTensor())

test_loader =DataLoader(dataset=test_data, batch_size=64, shuffle=False, num_workers=0, drop_last=True)
# shuffle 是否打乱   False不打乱
# drop_last 最后一轮数据不够时,是否舍弃 true舍弃

#img, target = test_loader[0] TypeError: 'DataLoader' object is not subscriptable
img, target = test_data[0]
print(img.shape)
print(target)

writer = SummaryWriter('dataloader')

for epoch in range(2):
    step = 0
    for data in test_loader:
        imgs, targets = data
        # print(imgs.shape)
        # print(targets)
        writer.add_images('Epoch:{}'.format(epoch),imgs,step)
        step = step+1

writer.close()

参考

TensorBoard快速入门(Pytorch使用TensorBoard)-CSDN博客

深度学习(二)——TensorBoard的使用 - 码头牛牛 - 博客园 (cnblogs.com)

Pytorch学习笔记之tensorboard - 奥辰 - 博客园 (cnblogs.com)

Python PyTorch SummaryWriter.add_images用法及代码示例 - 纯净天空 (vimsky.com)

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

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

相关文章

本轮牛市新趋势,跟随The First捕捉牛市Alpha

与以往牛市“百花齐放”的繁荣景象相比,本轮牛市颇具独特走势,呈现出了资金集中度高、财富聚集效应小的特点,绝大部分加密资产甚至跑不赢BTC的涨幅幅度。而以往大放色彩的公链币价值币的走势,甚至比不过牛尾才爆发的MEME币。这使得…

Python03:python代码初体验2

1、变量命名规范 1)字母(Unicode字符)、数字、下划线,不能使用特殊字符,数字不能开头 2)变量名是区分大小写的(大小写敏感,x和X是两个不同的变量名) 3)不能使…

centos安装部署Mysql8详细教程

文章目录 一、下载安装1.下载2.安装 二、常见问题1.You must reset your password using ALTER USER statement before executing this statement2.IP is not allowed to connect to this mysql 结尾 提示:以下是本篇文章正文内容,下面案例可供参考 一、…

文件批量改名工具软件NO.104

该工具基于 .Net 7.0 X86 编写,所以运行该软件就需要安装对应的环境,如果你在使用的时候弹出如上图所示的提示,就直接点击“是”前往官网下载吧 软件主要分为两块,上面是文件名规则,用于设置文件名;下方是文…

常见的Web漏洞——CORS

渗透做了多年的朋友都知道,大洞小洞都是漏洞。因此也学习、沉淀一下以前没重视的漏洞。 简介 CORS(Cross-Origin Resource Sharing,跨源资源共享)是一种由Web浏览器实现的安全策略,用于控制一个Web页面(服…

vs2019 c++20 规范的头文件 <future> 源码注释和几个结论

(1 探讨一)在多线程中,需要线程返回值的可以用该头文件中的类。该头文件中模板类和模板函数定义很多,用一幅图给出模板类之间的关系,方便从整体上把握和记忆: (2)

618数码好物推荐!精选便宜又实用的数码产品推荐!

着618购物盛宴的脚步日益临近,你是否已经锁定了心仪的宝贝?那些曾让你心动不已的数码产品,现在正是以最低价收入囊中的绝佳时机。618不仅是一场购物狂欢,更是各大电商平台竞相推出优惠政策的盛宴。为了满足大家的需求,…

右键Open with VSCode打开Vue3项目

之前看到一些同事能够对项目根目录进行右键打开项目到 Microsoft VS Code ,当时觉得挺不错的,于是乎今天自己折腾了一遍。 目录 1、创建vue3项目 2、更改注册表 # 打开注册表编辑器(Registry Editor) # 导航到以下注册表路径 …

宜选影票api接口如何申请密钥和授权呢?

宜选影票API接口的密钥申请和授权过程一般包括以下步骤,以下将按照清晰的格式分点表示和归纳相关信息: 注册开发者账号: 前往宜选影票的官方网站或开发者平台。注册一个开发者账号,填写必要的个人信息和联系方式。申请API访问权限…

使用apifox进行并发测试

1.普通的接口测试就不说了,非常简单 2.自动化测试

<网络安全>《88 国内主要企业网络安全公司概览(四)》

9 杭州迪普科技股份有限公司(简称联软科技) 信息内容LOGO成立日期创始于2008年总部浙江省杭州市滨江区月明路595号迪普科技18楼背景民营企业是否上市300768注册资本64,382.9039万主要产品网络安全数据安全交换机简介安全大数据处理引擎与AI智能分析引擎…

webgl_decals

ThreeJS 官方案例学习&#xff08;webgl_decals&#xff09; 1.效果图 2.源码 <template><div><div id"container"></div></div> </template> <script> // 光线投射相关代码 https://threejs.org/docs/index.html#api/z…

电路方案分析(十九)快速响应过流事件检测电路

快速响应过流事件检测电路 1.设计需求2.设计方案3.设计说明4.仿真验证 tips&#xff1a;方案参考来自TI参考设计&#xff0c;仅供学习交流使用。 1.设计需求 2.设计方案 这是一种快速响应单向电流检测解决方案&#xff0c;通常称为过流保护 (OCP)&#xff0c;可提供 < 2μ…

安徽某高校数据挖掘作业6

1 根据附件中year文件&#xff0c;编辑Python程序绘制年销售总额分布条形图和年净利润分布条形图&#xff0c;附Python程序和图像。 2 根据附件中quarter和quarter_b文件&#xff0c;编辑Python程序绘制2018—2020年销售额和净利润折线图&#xff0c;附Python程序和图像。 3 …

全志D1s软件入门之Tina Linux烧写教程

烧写 Tina Linux 烧写&#xff0c;即将编译打包好的固件下载到设备 烧写方式简介 全志平台为开发者提供了多种多样的烧写方式和烧写工具&#xff1a; &#xff08;1&#xff09; PhoenixSuit&#xff1a;基于Windows的系统的烧写工具&#xff0c;是最常用的烧写工具&#x…

【AI大模型】Transformers大模型库(一):Tokenizer

目录 一、引言 二、Tokenizer 2.1 概述 2.2 主要功能 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; Transformers 提供了数以千计的预训…

AI绘画入门指南!一遍就会!AI绘画Stable Diffusion新手入门教程

我们尝试了一段时间Midjourney&#xff0c;发现其对图片的可控性较弱。于是研究起了Stable Diffusion。 SD的主要优势在于开源&#xff0c;因为开源会有很多无私的大佬分享自己的模型、插件及脚本等&#xff0c;让SD有了更丰富的扩展。在画面统一性和更像本人方面要比MJ容易实…

104.网络游戏逆向分析与漏洞攻防-装备系统数据分析-筛选与装备有关的数据包

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

学生成绩管理系统(大一大作业)

功能 实现添加&#xff0c;排序&#xff0c;修改&#xff0c;保存等功能 库函数 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> 头文件 #define functioncreate(major) void major##compare(mana mn){\int i,j,s…

必应bing国内广告怎样开户投放呢?

企业都在寻找高效、精准的营销渠道以扩大品牌影响力&#xff0c;提升市场占有率&#xff0c;作为全球第二大搜索引擎&#xff0c;微软旗下的必应Bing凭借其卓越的搜索技术和庞大的用户基础&#xff0c;成为了众多企业拓展市场的首选广告平台。在中国&#xff0c;必应Bing广告以…