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

详解Tensorboard及使用教程

目录

  • 一、什么是Tensorboard
    • 二、配置Tensorboard
      • 环境要求
      • 安装
  • 三、Tensorboard的使用
    • 使用各种add方法记录数据
      • 单条曲线(scalar)
      • 多条曲线(scalars)
      • 直方图(histogram)
      • 图片(image)
      • 渲染(figure)
      • 网络(graph)
      • 其他
  • 三、结语

一、什么是Tensorboard

Tensorboard原本是Google TensorFlow的可视化工具,可以用于记录训练数据、评估数据、网络结构、图像等,并且可以在web上展示,对于观察神经网络的过程非常有帮助。PyTorch也推出了自己的可视化工具,一个是tensorboardX包,一个是torch.utils.tensorboard,二者的使用相差不大,这里介绍后者

二、配置Tensorboard

环境要求

  • 操作系统:Windows
  • Python3
  • PyTorch >= 1.0.0 && torchvision >= 0.2.1 && tensorboard >= 1.12.0 1

安装

注: 虽说PyTorch中直接有tensorboard的包,但是有时用的时候还是会报错,所以安装TensorFlow之后torch.utils.tensorboard就可以直接使用且稳定,所以这里介绍安装TensorFlow的方法。

  • pip环境(相对麻烦需要下载依赖项)

pip install tensorflow_gpu=2.5.0 -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install six numpy wheel
pip install keras_applications=1.0.6 --no-deps
pip install keras_preprocessing=1.0.5 --no-deps

  • conda环境安装

conda install --channel https://conda.anaconda.org/anaconda tensorflow=2.5.0

三、Tensorboard的使用

首先展示该包的使用的大致流程

1)导入tensorboard,实例化SummaryWriter类,指明记录日记路径等信息
from torch.utils.tensorboard import SummaryWriter
#实例化SummaryWriter,并指明日志存放路径。在当前目录如果每月logs目录将自动创建
#如果不写log_dir,系统将会创建runs目录
writer = SummaryWriter(log_dir = ‘logs’)
#调用实例
writer.add_xxx()
#关闭writer
writer.close()
2)调用相应的API,接口一般格式为:
add_xxx(tag_name, object, iteration-number)
3)启动tensorboard,在命令行中输入
tensorboard --logdir=r’加logs所在路径’
4)复制网址在浏览器中打开

使用各种add方法记录数据

单条曲线(scalar)

add_scalar(tag, scalar_value, global_step=None, walltime=None)

参数:

  • tag ( string ) – 数据标识符
  • scalar_value ( float或string/blobname ) – 要保存的值
  • global_step ( int ) – 要记录的全局步长值
  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒
  • new_style ( boolean ) – 是使用新样式(张量字段)还是旧样式(simple_value 字段)。新样式可能会导致更快的数据加载。
    例子:
from torch.utils.tensorboard import SummaryWriter
import numpy as npwriter = SummaryWriter()
for x in range(1, 101) :writer.add_scalar('y = 2x', x, 2 * x) ### 这里反了,正常情况应该是writer.add_scalar('y = 2x', 2 * x, x)
writer.close()

效果
在这里插入图片描述

多条曲线(scalars)

add_scalars( main_tag , tag_scalar_dict , global_step = None , walltime = None)

参数

  • main_tag ( string ) – 标签的父名称
  • tag_scalar_dict ( dict ) – 存储标签和对应值的键值对
  • global_step ( int ) – 要记录的全局步长值
  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒
    例子:
from torch.utils.tensorboard import SummaryWriter
import numpy as npwriter = SummaryWriter()
r = 5
for x in range(1, 101) :writer.add_scalars('run_14h', {'xsinx' : x * np.sin(x / r), 'xcosx' : x * np.cos(x / r), 'xtanx' : x * np.tan(x / r)}, x)
writer.close()

效果:
在这里插入图片描述

直方图(histogram)

add_histogram( tag , values , global_step = None , bins = ‘tensorflow’ , walltime = None , max_bins = None )

参数:

  • tag ( string ) – 数据标识符
  • 值(torch.Tensor、numpy.array或string/blobname)– 构建直方图的值
  • global_step ( int ) – 要记录的全局步长值
  • bins ( string ) – {‘tensorflow’,‘auto’, ‘fd’, …} 之一。这决定了柱的制作方式。
  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒
    例子:
from torch.utils.tensorboard import SummaryWriter
import numpy as npwriter = SummaryWriter()
for step in range(10) :x = np.random.randn(1000)writer.add_histogram('distribution of gaussion', x, step)
writer.close()

效果:
在这里插入图片描述

图片(image)

add_image(tag, img_tensor, global_step=None, walltime=None, dataformats = ‘CHW’)

参数:

  • tag ( string ) – 数据标识符
  • img_tensor ( torch.Tensor , numpy.array , or string/blobname ) – 图像数据
  • global_step ( int ) – 要记录的全局步长值
  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒
    例子:
from torch.utils.tensorboard import SummaryWriter
import numpy as np
import cv2 as cv
import torchimg = cv.imread('zhou.jpg', cv.IMREAD_COLOR)#输入图像要是3通道的,所以读取彩色图像
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
img = torch.tensor(img.transpose(2, 0, 1))#cv读取为numpy图像为(H * W * C),所以要进行轴转换
writer.add_image('zhou_ge', img, 0)writer.close()

效果:
在这里插入图片描述

渲染(figure)

add_figure( tag , figure , global_step = None , close = True , walltime = None )

参数:

  • tag ( string ) – 数据标识符
  • image( matplotlib.pyplot.figure ) – 图或图列表
  • global_step ( int ) – 要记录的全局步长值
  • close ( bool ) – 自动关闭图形的标志
  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
import matplotlib.pyplot as plt
%matplotlibwriter = SummaryWriter()x = np.linspace(0, 10, 1000)
y = np.sin(x)figure1 = plt.figure()
plt.plot(x, y, 'r-')
writer.add_figure('my_figure', figure1, 0)
writer.close()

效果:
在这里插入图片描述

网络(graph)

add_graph(model, input_to_model=None, verbose=False, use_strict_trace = True)

参数:

  • model( torch.nn.Module ) – 要绘制的模型。
  • input_to_model ( torch.Tensor or list of torch.Tensor ) – 要输入的变量或变量元组
  • verbose(bool)– 是否在控制台中打印图形结构。
  • use_strict_trace ( bool ) – 是否将关键字参数严格传递给 torch.jit.trace。当您希望跟踪器记录您的可变容器类型(列表、字典)时传递 False.

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
import torch
import torch.nn as nnwriter = SummaryWriter()
class MLP(nn.Module) :def __init__(self):super(MLP, self).__init__()self.Net = nn.Sequential(nn.Linear(784, 512),nn.ReLU(),nn.Linear(512, 128),nn.ReLU(),nn.Linear(128, 10))def forward(self, input):input = input.view(-1, 28 * 28)return self.Net(input)
model = MLP()
input = torch.FloatTensor(np.random.rand(32, 1, 28, 28))
writer.add_graph(model, input)writer.close()

效果:
在这里插入图片描述
在这里插入图片描述

其他

嵌入:

add_embedding(mat, metadata=None, label_img=None, global_step = None, tag=‘default’, metadata_header=None)

参数:

  • mat ( torch.Tensor or numpy.array ) – 一个矩阵,每一行都是数据点的特征向量
  • metadata ( list ) – 标签列表,每个元素都将转换为字符串
  • label_img ( torch.Tensor ) – 图像对应每个数据点
  • global_step ( int ) – 要记录的全局步长值
  • tag ( string ) – 嵌入的名称

三、结语

以上是关于一些tensorboard可视化的操作,如果您有收获的话,就给👨一个三连。就此谢过!

http://www.lryc.cn/news/2417781.html

相关文章:

  • Android Binder机制解析
  • 【传输层协议】 TCP UDP协议 解析(一)
  • FLOPs如何计算
  • 取拼音字头
  • VB 在Visio 2010 以编程方式创建子进程图
  • 根文件系统(二):busybox
  • 浅谈NBIOT
  • 全网最全python教程,从零到精通(学python有它就够必收藏)_python学习相关博客
  • 如何使用好google学术?
  • js刷新当前页面的5种方式
  • LNMP架构环境搭建(Linux+Nginx+Mysql+PHP)
  • 数组详细讲解
  • loki介绍
  • 正确配置安装和卸载Cygwin
  • Windows server 2016——SQL server 简介与安装
  • 都2023年了,Servlet还有必要学习吗?一文带你快速了解Servlet
  • Activiti入门及案例
  • window硬盘管理
  • 什么是UTF-8编码
  • spice新手学习手册
  • 我的docker随笔38:用 registry 搭建私有仓库
  • 常用概率分布的矩母函数、特征函数以及期望、方差的推导
  • ActiveMQ:消息的优先级与抢占机制
  • Tomcat下载及配置(IDEA)
  • Linux服务器JDK安装环境变量配置详细步骤
  • 【Java技术专题】「Guava技术系列」Guava-Collections实战使用相关Guava不一般的集合框架
  • CountDownLatch 和 CyclicBarrier 使用场景详解
  • 2024年安卓最全理解Android虚拟机体系结构,2024年最新Android高级工程师进阶学习
  • U盘启动盘怎么制作?
  • Regression算法之通俗讲解