pytorch初学笔记(二):TensorBoard之add_scale()的使用

news2024/12/23 0:27:55

目录

 一、SummaryWriter类的介绍

1. 定义

2. SummaryWriter初始化

2.1 初始化 

2.2 帮助文档给出的使用范例

2.3 常用方法

二、add_scale()方法介绍

1.  常用参数介绍 

2. 绘制图形

2.1 安装tensorboard

2.2 对应代码

2.3 打开tensorboard窗口

2.3 注意事项

三、add_image()方法

1. 参数介绍

2. 生成图像对象

3. 把图片对象转换为numpy类型

3.1 控制台调试

3.2 代码完善

3.3 完整代码

4. 更多应用 

4.1 修改步长

4.2 修改tag


 一、SummaryWriter类的介绍

使用如下语句导入SummaryWriter类

from torch.util.tensorboard import SummaryWriter

1. 定义

SummaryWriter类可以在指定文件夹生成一个事件文件,这个事件文件可以对TensorBoard解析。

'SummaryWriter 类提供了一个可以在已给定目录下创建事件文件的高级API,并可以向其中添加摘要和事件。该类可以异步的更新文件内容,允许训练程序调用方法直接从训练循环向文件添加数据,而不减慢速度培训。

2. SummaryWriter初始化

2.1 初始化 

 SummaryWriter的初始化方法主要使用的参数为log_dir,log_dir即为指定写入日志文件的文件夹名称。

2.2 帮助文档给出的使用范例

 三种初始化方法

Examples::

    from torch.utils.tensorboard import SummaryWriter

    # create a summary writer with automatically generated folder name.
    writer = SummaryWriter()
    # folder location: runs/May04_22-14-54_s-MacBook-Pro.local/

    # create a summary writer using the specified folder name.
    writer = SummaryWriter("my_experiment")
    # folder location: my_experiment

    # create a summary writer with comment appended.
    writer = SummaryWriter(comment="LR_0.1_BATCH_16")
    # folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/

  • 如果初始化时无参数,则默认存储位置为runs/May04_22-14-54_s-MacBook-Pro.local/ 

  • 如果初始化输入log_dir参数为my_experience,则生成的文件夹名称为my_experience

  • 如果初始化时输入comment参数为“LR_0.1_BATCH_16”,则可以在生成的默认文件夹名称后面加一个对应的后缀

2.3 常用方法

  1. add_image():用于显示图形
  2. add_scale():用于绘制图形

二、add_scale()方法介绍

1.  常用参数介绍 

最主要使用的是tag、scalar_value 和 global_step三个参数。

  •  tag:所生成图像的标题
  • scalar_value:对应图形y轴,训练到每一步时的对应数值
  • global_step:  对应图形x轴,训练的具体每一步

所生成图形以及其对应参数位置如下所示。 

2. 绘制图形

2.1 安装tensorboard

 在terminal窗口的虚拟环境下使用pip命令安装

一定注意terminal窗口处的括号中不是base,而是你自己创建的虚拟环境的名字,如果不是的话可以参照下面的方法把terminal修改成自己的虚拟环境。 

  • 如何在terminal终端设置直接进入虚拟环境:

(7条消息) 设置pycharm打开terminal终端,自动进入虚拟环境的办法_AI悦创的博客-CSDN博客_pycharm的terminal默认环境

2.2 对应代码

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")
for i in range(100):
    writer.add_scalar("The title of this graph is y=2x", 2*i, i)
writer.close()

使用for循环进行x轴和y轴的取值 

图形的标题为:The title of this graph is  y=2x

y轴为2*i, x轴为i

书写完成后点击运行按钮,可以发现在项目包目录下出现logs文件夹,里面有对应的日志文件

 

  •  运行时出现错误的解决方法

运行时出现AttributeError时解决方法: 

(7条消息) AttributeError: module 'distutils' has no attribute 'version'-人工智能-CSDN问答

2.3 打开tensorboard窗口

  • 在terminal命令行输入:

tensorboard --logdir=logs

默认端口号为6006,为防止默认端口号6006被占用,可以手动修改端口号为其他号

  • 修改默认端口号6007为6007:

tensorboard --logdir=logs --port=6007

效果如下所示,点击对应的蓝色链接即可跳转至网页 

2.3 注意事项

在使用writer写入新事件过程中,之前的事件也会被保存,会造成绘制的图形出现混乱,因此有如下两种解决方案:

  • 把logs文件夹下之前的日志文件删除,
  • 每次写新事件时都新定义一个文件夹

三、add_image()方法

1. 参数介绍

  •  tag:生成图形的标题
  • img_tensor:图片的数据类型,只能是torch.tensor、numpy.array 或 string/blobname
  • global_step:训练步骤,int型
  • dataformats: 
  • 设置图片的形状,如果图片的shape是(3,H,   W),即3通道在前,后面依次是图片的长和宽,则dataformats=`CHW`,为默认值,无需设定;   
  • 如果图片的shape是(H, W)、(H, W, 3),则设置dataformats需要依次设定为`HW`, `HWC`,

注:C:channel,图片通道数;

       H: height,图片高度;

       W:width,图片宽度;

2. 生成图像对象

使用PIL库生成对应图片对象,这里使用dataset2数据集中的第一张蜜蜂图片,复制该图片相对路径,生成对应的img对象,首先在控制台中进行调试。

 可以看到img对象对应的类型为PIL对象,不满足add_image()方法中图片所需的数据类型的要求,因此我们需要把该对象类型转换为numpy型对象。

3. 把图片对象转换为numpy类型

3.1 控制台调试

创建img_numpy对象,使用numpy中的array方法把刚刚创建的img对象装换为numpy.array型。 

3.2 代码完善

 我们定义图片的标题为test,图片对象为img_numpy,步长为1,与此同时我们可以看到该numpy型的图片对象,他的shape是(H,W,C)型,所以在add_image的参数中我们需要加上如下语句:

dataformats='HWC'

 因此方法定义如下:

writer.add_image("test",img_numpy,1,dataformats='HWC')

3.3 完整代码

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

writer = SummaryWriter("logs2")
img_path="datasets2/train/ants_image/0013035.jpg"
# 生成pil的图片对象
img_PIL=Image.open(img_path)
# 把pil对象转化为numpy对象
img_array=np.array(img_PIL)
writer.add_image("test",img_array,1,dataformats='HWC')
writer.close()

运行后去terminal窗口运行tensorboard

 结果如下所示:

生成的图片标题为test,步长step=1,为对应的蚂蚁图片 

4. 更多应用 

4.1 修改步长

把图片路径改为另一张图片,把global_step改为2,运行文件后刷新6006网页,可以看到效果如下所示,拖动进度条可以改变图片和step

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

writer = SummaryWriter("logs")

img_path="datasets2/train/ants_image/5650366_e22b7e1065.jpg"
img_PIL = Image.open(img_path)
img_array = np.array(img_PIL)
writer.add_image("test",img_array,2,dataformats="HWC")
writer.close()

 

 

4.2 修改tag

如果想要再新建一个图片框,则只需改动tag和img_path,即可在下方显示一个新的图片。

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

writer = SummaryWriter("logs")

img_path="datasets2/train/ants_image/5650366_e22b7e1065.jpg"
img_PIL = Image.open(img_path)
img_array = np.array(img_PIL)
writer.add_image("test1",img_array,2,dataformats="HWC")
writer.close()

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kubernetes学习笔记

参考 Cloudman 老师的《每天5分钟玩转Kubernetes》,记录如何使用 Kubernetes ,由于版本变化,一些命令也有相应的变化,本文对应 Kubernetes 1.25.3 5. 运行应用 010.123 用 Deployment 运行应用 原文使用kubectl run命令&#x…

JS(Dom对象的属性和方法)第十六课

Dom对象的属性和方法自定义的熟悉操作上面是今天博客要讲述的内容 一个案例回顾上次课讲的内容 下面是Html中的元素布局结构 <div>我是div审查元素<p>我是p标记的元素</p><span>我是span的元素信息</span></div><div class"one&…

搭建ftp服务器注意事项

很早之前写过一篇关于FTP服务器相关博客&#xff1a;FTP服务器主动被动模式详解。直到最近生产环境需要搭建一个FTP服务&#xff0c;才发现一些细节还需注意。 生产环境搭建ftp服务器&#xff0c;如果有外部用户需要连接ftp服务器下载文件&#xff0c;一般用的是Passive (PASV&…

[深度学习] 名词解释--正则化

正则化 花书的定义&#xff1a;凡是可以减少泛化误差&#xff08;过拟合&#xff09;而不是减少训练误差的方法&#xff0c;都叫正则化方法。 目的&#xff1a;拟合训练数据&#xff0c;防止模型过拟合&#xff0c;通常使用L2正则化.用各种方法规范模型参数的方法. 什么是神经网…

408 | 【2012年】计算机统考真题 自用回顾知识点整理

选择题 T2&#xff1a;后缀表达式&#xff08;逆波兰表达式&#xff09;—— 注意 操作数的顺序&#xff01; 中缀转后缀 运算顺序不唯一&#xff0c;因此对应的后缀表达式也不唯一“左优先”原则&#xff1a;只要左边的运算符能先计算&#xff0c;就优先算左边的用栈实现中缀…

JS(DOM)第十五课

Dom的全称是Document Object Model DOM 定义了访问 HTML 和 XML 文档的标准 Dom的定义 DOM 文档对象模型 DOM是针对XML的基于树的API。描述了处理网页内容的方法和接口&#xff0c;是HTML和XML的API&#xff0c;DOM把整个页面规划成由节点层级构成的文档。 DOM本身是与语言无…

基于simulink的超级电容,电池及DC motor充放电系统仿真

目录 一、理论基础 二、核心程序 三、测试结果 作者ID &#xff1a;fpga和matlab CSDN主页&#xff1a;https://blog.csdn.net/ccsss22?typeblog 擅长技术&#xff1a; 1.无线基带,无线图传,编解码 2.机器视觉,图像处理,三维重建 3.人工智能,深度学习 4.智能控制,智能优…

【C ++基础】迭代器(iterator)在string里面的简单使用

【C 基础】迭代器(iterator)在string里面的简单使用 前言 本文是为了扫清后面学习的难点&#xff0c;而特意写的文章&#xff0c;只是介绍迭代器如何在string中使用。 迭代器的详细解释请看这里&#xff1a; [点击跳转&#xff08;这里还没有写哦&#xff09;] C专栏主页&am…

【Node.JS】事件的绑定与触发

往期文章 【Node.JS】写入文件内容 【Node.JS】读取文件内容 目录 简介 绑定事件 on&#xff08;&#xff09; addListener&#xff08;&#xff09; once&#xff08;&#xff09; 监听事件emit&#xff08;&#xff09; 传参 删除事件 removeListener&#xff08;&am…

【无人机】基于蚁群算法的无人机航路规划研究附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

【笔试题】【day14】

目录 第一题&#xff08;哪些成员变量需要在初始化列表初始化&#xff09; 第二题&#xff08;多态的条件&#xff09; 第三题&#xff08;多态的条件&#xff08;通过父类对象调用的全部都是父类的方法&#xff09;&#xff09; 第四题&#xff08;菱形继承&#xff0c;虚…

猴子也能学会的jQuery第一期——什么是jQuery

#1024程序员节&#xff5c;用代码&#xff0c;改变世界 &#x1f4da;系列文章—目录&#x1f525; 猴子也能学会的jQuery第一期——什么是jQuery 猴子也能学会的jQuery第二期——引入jQuery 未完待续 目录 &#x1f4da;系列文章—目录&#x1f525; &#x1f4c4;需要具备的…

【最佳实践】瀚高数据库 Windows企业版v6.0.4 的安装

Windows7、Windows10 一、安装 解压缩文件“hgdb6.0.4-enterprise-windows10-x86-64-20220127.zip”&#xff0c;以【管理员】身份运行 setup.exe。 安装过程基本上是下一步下一步即可&#xff0c;注意步骤如下。 1.1 安装主目录 注意安装路径&#xff0c;不要包含中文&am…

【创作中心】自定义模板的使用

个人主页&#xff1a;天寒雨落的博客_CSDN博客-初学者入门C语言,数据库,python领域博主 &#x1f4ac; 刷题网站&#xff1a;一款立志于C语言的题库网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com) 特别标注&#xff1a;该博主将长期更新c语言内容&#xff0c;初学c语言的友友们…

2022年12月1日起,OCS将停止接受GOTS的原料投入

【2022年12月1日起&#xff0c;OCS将停止接受GOTS的原料投入】 GOTS介绍&#xff1b; 全球有机纺织品标准&#xff0c;Global Organic Textile Standard, 简称GOTS。该标准由国际天然纺织品协会&#xff08;IVN&#xff09;、日本有机棉协会&#xff08;JOCA&#xff09;&#…

数字化智慧梁场管理系统解决方案

系统介绍 数字化智慧梁场管理系统实现对预制构件生产的全周期智慧化管理。系统以BIM为基础&#xff0c;搭建完整数字孪生模型&#xff0c;依据生产工序智能排程&#xff1b;围绕生产工序&#xff0c;生产任务智能传递&#xff0c;协同工作&#xff1b;依据生产工序&#xff0c;…

Python实战:获取bing必应壁纸首页的每日一图(仅做学习用)

目录需求网站分析代码实现进一步接口获取其他资源需求 老板&#xff1a;微软必应https://cn.bing.com/ 首页的每日一图看着不错&#xff0c;能不能自动获取 我&#xff1a;我试试 网站分析 我们查看网页元素&#xff0c;不难发现背景图就在类名为.img_cont 的标签下 可是搜…

Vitepress搭建组件库文档(下)—— 组件 Demo

上文 《Vitepress搭建组件库文档&#xff08;上&#xff09;—— 基本配置》已经讨论了 vitepress 搭建组件库文档的基本配置&#xff0c;包括站点 Logo、名称、首页 home 布局、顶部导航、左侧导航等。本文进入最重要的部分 —— 如何像 Element Plus 那样一遍代码就可以展示组…

面试查漏补缺--java基础-容器源码解读

前言&#xff1a; 本文主要是通过源码来解读一些自己还不懂的地方&#xff0c;一些数据结构上的东西&#xff0c;不做过多的解读。 文章目录一、容器体系二、List容器2.1 ArrayList源码2.2 Vector 源码2.3 LinkedList三、Set容器3.1 HashSet一、容器体系 容器总的来说分为两大…

小小博客项目(servlet实战演练)

目录 MVC模式简介 项目概述 &#x1f351;Model&#xff08;模型层&#xff09; &#x1f351;View&#xff08;视图层&#xff09; &#x1f351;Controller&#xff08;控制器层) 项目实战 上面pom.xml代码参考 一、模型层 &#x1f330;User代码&#xff1a;对应数据…