详解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.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可视化的操作,如果您有收获的话,就给
详解Tensorboard及使用教程相关推荐
- MySQL安装教程包含所有平台(图解),MySQL下载步骤详解(带安装教程)
现在作为服务器的操作系统一般有两种,分别是 Windows Server 和 Linux,这里我们分别介绍在 Windows 下和 Linux 下安装 MySQL 的具体操作步骤. MySQL安装教程 ...
- mhdd应用详解-入门篇(图文教程)
mhdd应用详解-入门篇(图文教程) 来源:wxiu.com 作者:fox 时间:2009-03-13 点击: 54 对于专业的 电脑维修人员来说, MHDD是必备的硬盘工具,但是技术人员一般只拿他 ...
- 详解CSDN-markdown编辑器使用教程(首次使用CSDN-markdown)
详解CSDN-markdown编辑器使用教程(首次使用CSDN-markdown) 原创:丶无殇 时间:2019-9-19 *仅基于原文教程加以注释* *注释以代码片方式(红字)* 字体颜色和大 ...
- mysql5 workbench教程_详解MySQL Workbench使用教程
MySQL Workbench 是一款专为 MySQL 设计的集成化桌面软件,也是下一代的可视化数据库设计.管理的工具,它同时有开源和商业化两个版本.该软件支持 Windows 和 Linux 系统, ...
- 32位系统是指地址_不起眼却很重要丨32位操作系统与64位操作系统详解(含查询教程)...
大家好,我是小诸葛,一个喜欢捣鼓电脑的小机灵鬼儿,如果关注电脑 手机信息,可以关注小诸葛! 小诸葛 在下载软件的时候,可能会遇到需要选择32位或64位操作系统的选项,对小白来说,32跟64是什么都不知 ...
- 【数据结构】顺序表实现超详解(保姆级教程)
[数据结构] 目录 前言 顺序表 接口实现 各项功能 接口详解 顺序表初始化 顺序表释放 顺序表展示 顺序表容量检查 顺序表数据尾插 顺序表数据头插 顺序表数据前删 顺序表数据尾删 顺序表数据查找 ...
- jenkins流水线(jenkinsfile)详解,保姆式教程
jenkins流水线(jenkinsfile)详解 在学习本篇文章的时候,可以去看看jenkins官网的文档,jenkins官网支持中文,观看十分便捷 此教程使用的是gitee+docker+jenk ...
- 计算机架构64位查看,32位操作系统与64位操作系统详解(含查询教程)
小诸葛 在下载软件的时候,可能会遇到需要选择32位或64位操作系统的选项,对小白来说,32跟64是什么都不知道,于是就会瞎选一通,运气好的,电脑本身是64位操作系统的,选完下载后没问题,但如果是32位 ...
- FFmpeg 快速上手:命令行详解、工具、教程、电子书
FFmpeg 简介 FFmpeg 是一个开源的音视频处理工具,诞生已22年.它可以用来处理音视频的编解码.格式转换.剪辑.合并.抽取.压缩.解压缩.滤镜.字幕等等.它可以在 Windows.Linux ...
最新文章
- Eclipse常用的高效插件
- Shell脚本攻略02-玩转变量与环境变量
- C++赋值运算符重载【C++赋值运算符重载】
- 要不要学Python?如何快速学Python?
- fedora 忘记root密码
- mysql5.6触发器,MYSQL5.6创建存储过程和触发器
- 使用Red Hat OS为Amazon EC2实例安装SQL Server Linux
- Spring整合MyBatis原理之MapperScannerConfigurer(一)
- FPGA学习3-Vivado简易使用方法
- 读取cpu温度的api_获取传感器温度-cpu 温度篇
- 【5G核心网】PFCP Message PFCP 消息
- 机器学习-数据科学库-day4
- 数字化让企业精益管理梦成真,技术成核心驱动
- android 载入svg动画,Android 加载SVG动画
- 手机遇到性能BUG怎么破?
- Java验证中文汉字、英文字母、标点符号一个字符占多少字节
- 7-4 计算存款利息(10 分)
- 一、linux驱动开发-8.1-platform设备驱动
- 【Oracle 12c Flex Cluster专题】—节点角色转换
- python长整型是什么_长整型long-PYTHON