深度学习(二)——TensorBoard的使用

深度,学习,tensorboard,使用 · 浏览次数 : 84

小编点评

**使用Pytorch导入TensorBoardSummaryWriter** ```python import torch.utils.tensorboard as SummaryWriterSummaryWriter ``` **SummaryWriter中一些子类函数的使用** 1. `add_scalar()`:添加标量到SummaryWriter中(1) ```python writer.add_scalar("y=x", 2 * i, i) ``` 2. `add_image()`:添加image到SummaryWriter(1) ```python writer.add_image("img_tensor", img_tensor, 1, dataformats="HWC") ``` **如何打开事件文件logs** 使用Anaconda Prompt或Pycharm的Terminal: 1. 在TensorBoard的命令行中使用:`tensorboard --logdir=logs` 2. 此命令创建一个名为`logs`的文件,并将TensorBoard服务打开到该文件夹下。 **示例** ```python # 数据下载地址 image_path = "E:\\\\Desktop\\\\hymenoptera_data\\\\hymenoptera_data\\\\train\\\\ants\\\\0013035.jpg" # 读取图片数据 img = Image.open(image_path) # 创建SummaryWriter实例 writer = SummaryWriterSummaryWriter("Image") # 添加image到SummaryWriter writer.add_image("test", img_array, 1, dataformats="HWC") # 关闭SummaryWriter writer.close() ```

正文

一、使用Pytorch导入TensorBoard

SummaryWriter详解

from torch.utils.tensorboard import SummaryWriter
  • SummaryWriter是向事件文件夹log_dir写入事件文件的一个操作,并且这个事件文件可以被Tensorboard进行解析

参数详解:

  • log_dir:输入文件夹的名称(string)。如果为None,默认位置为:runs/**CURRENT_DATETIME_HOSTNAME**

  • 其他不常用参数:comment, purge_step, max_queue, flush_secs, fliename_suffix. 具体用处可以在pycharm中ctrl+单击SummaryWriter查看。

二、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)代码演示(需要pip tensorborad)

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)代码演示(需要pip tensorborad)

使用示例:

数据下载地址:百度网盘 请输入提取码 (baidu.com)

提取码:zsh8

① 利用PIL读取图片数据

from PIL import Image
image_path="E:\\Desktop\\hymenoptera_data\\hymenoptera_data\\train\\ants\\0013035.jpg"  #图片路径
img=Image.open(image_path)  #读取图片信息
print(type(img))


'''
[Run]
<class 'PIL.JpegImagePlugin.JpegImageFile'>
'''
  • 很明显,该数据类型不符合img_tensor的要求,所以不能用PIL读取

② 利用Opencv读取图片,获得numpy型图片数据

利用numpy.array(),对PIL图片进行转换,具体操作如下:

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

writer=SummaryWriter("Image")

image_path="E:\\Desktop\\hymenoptera_data\\hymenoptera_data\\train\\ants\\0013035.jpg"  #图片路径
img_PIL=Image.open(image_path)  #读取图片的PIL格式

img_array=np.array(img_PIL)  #将PIL类型的图片数据转为numpy型数据
print(img_array.shape)   #查看图片数据的格式. [Run] (512, 768, 3);即3通道在最后一位

#添加image到SummaryWriter
#由shape数据可知,3通道在最后一位,所以设置为‘HWC’
writer.add_image("test", img_array, 1, dataformats='HWC')

writer.close()

③ 从PIL到numpy,需要在add_image()中指定shape中每一个数字/维表示的含义

三、如何打开事件文件logs

在上面writer=SummaryWriter("logs")代码的基础上,建立了一个名称为logs的文件,下面我们学习如何打开它。

1. 打开方法:使用Anaconda Prompt或Pycharm的Terminal

(1)具体操作

  • 输入tensorboard --logdir=logs并按回车,需要注意的是:logdir=事件文件所在的文件名。得到如下语句:

TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.13.0 at http://localhost:6006/ (Press CTRL+C to quit)

其中,http://localhost:6006/为tensorboard的打开位置,可直接单击打开

  • 但有的时候,一台服务器上有好几个人在使用,如果都指向6006窗口,则会导致与其他人发生冲突,所以我们可以指定一个端口:

    tensorboard --logdir=logs --port=6007

(2)可能存在的错误

打开可能会出现下面这个页面:

存在原因及解决办法如下:

  • tensorboard --logdir=路径中含有中文

    解决方法:把中文改成英文

  • 路径错误

    解决方法:tensorboard --logdir=路径,其中这个输入的路径不用带引号

  • tensorboard语句错误

    解决方法:在一些tensorboard版本中,打开路径的语句为tensorboard --logdir=路径,但在另一些版本中,打开路径的语句为tensorboard --logdir"路径"

2. 可能存在的显示错误

如果反复更改上面的代码并运行,比如说把\(y=2x\)改为\(y=3x\),那么可能会出现这样的图像:

也就是说\(y=2x\)\(y=3x\)会同时出现在同一个图像上,并且还会出现一条拟合这两个函数的线。解决方法如下:

  • 方法一:把--logdir中对应的文件夹找到,并直接删除。然后再运行一次程序,绘制想要的图片。

  • 方法二:创建一个子文件

3.图像事件文件的读取

  • 方法同上

  • 如果要同时读取几张图片,可以有以下方法:

    • writer.add_image("test", img_array, 1, dataformats='HWC')中的step由1改为2或多个,此时可在同一个图像上,翻页显示

    • writer.add_image("test", img_array, 1, dataformats='HWC')中的tag由"test"改为另一个名字,此时可打开一个新的框来显示图像

与深度学习(二)——TensorBoard的使用相似的内容:

深度学习(二)——TensorBoard的使用

内含使用Tensorboard中的SummaryWriter子类add_scalar()和add_image(),将函数数据、图像进行可视化的详解。

Pytorch:使用Tensorboard记录训练状态

我们知道TensorBoard是Tensorflow中的一个强大的可视化工具,它可以让我们非常方便地记录训练loss波动情况。如果我们是其它深度学习框架用户(如Pytorch),而想使用TensorBoard工具,可以安装TensorBoard的封装版本TensorBoardX。最后,需要提到的是,因为Tensorboard太常用了,所以在目前最新的Pytorch版本中已经直接集成进来了。所以,现在使用Tensorboard只需要直接导入torch.utils.tensorboard即可。

深度学习项目-MobileNetV2水果识别模型

本项目旨在研究利用深度学习模型进行水果图像分类的方法,具体包括两个主要任务:一是使用卷积神经网络(CNN)模型进行水果图片的分类,二是探索轻量级神经网络模型MobileNetV2在水果图像分类中的应用。

入侵检测系统综述文献研读

什么是入侵检测系统? 入侵检测就是从大量行为中找出异常部分,如果将其转化为深度学习知识,就是构建一个二分类器来识别异常和正常两种类别,但是因为网络入侵检测还需要相应的类别,因此二分类器不可以满足,所以要扩展到多分类器。 入侵检测系统的分类 现在有关入侵检测系统主要研究基于网络的入侵检测或基于异常的入

Python学习之十八_django的学习(二)

# Python学习之十八_django的学习(二) ## 前言 ``` 前面学习了基本的django的使用. 这里想着稍微深入一点学习templates 以及进行级联的路由展示. ``` ## 修改配置文件 ``` 要想使用 templates下面的文件. 需要修改一下项目级别的 settings

聊一聊 SQLSERVER 的行不能跨页

一:背景 1. 讲故事 相信有很多朋友在学习 SQLSERVER 的时候都听说过这句话,但大多都是记忆为主,最近在研究 SQLSERVER,所以我们从 底层存储 的角度来深入理解下。 二:理解数据页 1. 数据页的组织 在前面的文章中我也说过,一个 数据页 是 8k 大小,那这 8k 是如何组织的呢

研二学妹面试字节,竟倒在了ThreadLocal上,这是不要应届生还是不要女生啊?

一、写在开头 今天和一个之前研二的学妹聊天,聊及她上周面试字节的情况,着实感受到了Java后端现在找工作的压力啊,记得在18,19年的时候,研究生计算机专业的学生,背背八股文找个Java开发工作毫无问题,但现在即便你是应届生,问的考题也非常的深入和细节了,只会背八股,没有一定的代码量和项目积累,根本

ComfyUI进阶篇:ControlNet核心节点

前言: ControlNet_aux库包含大量的图片预处理节点,功能丰富,适用于图像分割、边缘检测、姿势检测、深度图处理等多种预处理方式。掌握这些节点的使用是利用ControlNet的关键,本篇文章将帮助您理解和学会使用这些节点。 目录 一、安装方法 二、模型下载 三、Segmentor节点 四、L

深度学习论文翻译解析(二十三):Segment Angthing

论文标题:Segment Angthing 论文作者: Alexander Kirillov Eric Mintun Nikhila Ravi Hanzi Mao... 论文地址:2304.02643 (arxiv.org) 声明:小编翻译论文仅为学习,如有侵权请联系小编删除博文,谢谢! 小编是一个

深度学习论文翻译解析(二十二):Uniformed Students Student-Teacher Anomaly Detection With Discriminative Latent Embbeddings

论文标题:Uniformed Students Student-Teacher Anomaly Detection With Discriminative Latent Embbeddings 论文作者: Paul Bergmann Michael Fauser David Sattlegger C