Pytorch学习-tensorboard的使用
Pytorch学习-tensorboard的使用
- 1 Tensorboard简介
- 运行机制
- 安装及测试
- 2 SummaryWriter实例的使用教程
- (1)初始化summaryWriter的方法
- (2)不同类型数据的记录
- 1)数字 scalar
- 使用样例
- 2) 直方图 histogram
- 使用样例
- 3) 运行图 graph !!
- 官方样例
- 4) 图片 image (pillow库支持)
- 5) 嵌入向量embedding
1 Tensorboard简介
参考链接1安装:
参考链接2使用:
TensorBoard:TensorFlow中强大的可视化工具;
支持标量、图像、文本、音频、视频和Embedding等多种数据可视化;
运行机制
- 在python脚本中记录可视化的数据;
- 记录的数据会以event file(事件文件)存放到硬盘中;
- 在终端使用TensorBoard读取event file,TensorBoard在网页端进行可视化;
安装及测试
- 安装
终端输入命令 pip install tensorboard 以及 pip install future,安装完成即可。 - 运行可视化
1) 先运行下面的代码,得到event 文件
import numpy as np
from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter(comment='test_tensorboard') # 用于记录要可视化的数据for x in range(100):writer.add_scalar('y=2x', x * 2, x) # 'y=2x'是标量的名称, x*2是曲线的y轴,x是曲线的x轴writer.add_scalar('y=pow(2, x)', 2 ** x, x)writer.add_scalars('data/scalar_group', {"xsinx": x * np.sin(x),"xcosx": x * np.cos(x),"arctanx": np.arctan(x)}, x)
writer.close()
2)在terminal输入 命令 :
tensorboard --logdir=./runs
得到类似以下输出:
TensorBoard 2.1.1 at http://localhost:6006/ (Press CTRL+C to quit)
打开对应网站即可看到可视化界面
2 SummaryWriter实例的使用教程
(1)初始化summaryWriter的方法
- 提供一个路径,使用该路径保存日志
- 无参数,默认使用 “
runs/日期时间
” 路径保存日志 - 提供一个comment参数,将使用 “
runs/日期时间-comment
” 路径保存日志
使用过程:
对于每次实验建立一个路径不同的summaryWriter,也叫一个run
接下来,调用summaryWriter中的不同实例中的add_something
方法向日志中写入文件
如果想要可视化这些数据,在命令行中开启tensorboard即可:tensorboard --logdir=<your_log_dir>
其中,<your_log_dir>
可以是单个run的路径,也可以是父目录,底下含有多个子文件夹,可以在可视化界面横向的比较runs/
下面的不同次实验得到的数据的差异。
(2)不同类型数据的记录
1)数字 scalar
使用add_scalar
方法记录数字常量,如训练过程中的loss,accuracy、learning_rate等,监控训练过程
add_scalar(tag, scalar_value, global_step=None, walltime=None)
参数
- tag(string) 数据名称,不同名称的数据使用不同曲线展示
- scalar_value(float) 数字常量值 必须为float类型
- global_step(int,optional):训练的step
- walltime(float,optional) 记录发生的时间,默认为time.time()
注意:如果为pytorch scalar tensor 需要调用.item()方法获取其数值
使用样例
在’runs/scalar_example‘和‘runs/another_scalar_example’两个不同目录中记录名称相同但是参数不同的两个二次函数和指数函数数据,效果如下图。
from tensorboardX import SummaryWriter
writer = SummaryWriter('runs/scalar_example') # 写入的目录
for i in range(10):writer.add_scalar('quadratic',i**2,global_step=i)writer.add_scalar('exponential',2**i,global_step=i)writer = SummaryWriter('runs/another_scalar_example') # 在另一个路径中写
for i in range(10):writer.add_scalar('quadratic',i**3,global_step=i)writer.add_scalar('exponential',3**i,global_step=i)
执行命令 tensorboard --logdir=./policy_save/runs/
后打开网页 【定位到公共在一起的目录】
可以看到,两个名称相同的数据被放在同一张图中,便于对比观察。可以在左侧runs
栏选择要查看哪些变量
2) 直方图 histogram
使用add_histogram
方法记录一组数据的直方图
**add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None, max_bins=None)**
参数:
- tag(string) 数据名称,不同名称的数据使用不同曲线展示
- values(torch.Tensor,numpy.array, or string / blobname): 用来构建直方图的数据
- global_step(int,optional):训练的step
- bins(string,optional):取值有‘tensorflow’,‘auto’,’fd’等 该参数决定了分桶的方式??。
- walltime(float,optional) 记录发生的时间,默认为time.time()
- max_bins(int,optional):最大分桶数
使用样例
import numpy as np
writer = SummaryWriter('runs/embedding_example')
writer.add_histogram('normal_centered',np.random.normal(0,1,1000),global_step=1)
writer.add_histogram('normal_centered',np.random.normal(0,2,1000),global_step=50)
writer.add_histogram('normal_centered',np.random.normal(0,3,1000),global_step=100)
结果图:
可以看到有"DISTRIBUTIONS"和"HISTOGRAMS"两栏,它们都是用来观察数据分布的。其中在"HISTOGRAMS"中,同一数据不同 step 时候的直方图可以上下错位排布 (OFFSET) 也可重叠排布 (OVERLAY)。
3) 运行图 graph !!
使用add_graph
方法来可视化一个神经网络
**add_graph(model, input_to_model=None, verbose=False, **kwargs)**
参数:
- model(torch.nn.Module):待可视化的网络模型
- input_to_model(torch.Tensor or list of torch.Tensor, optional):待输入神经网络的变量或一组变量
官方样例
import torch
import torch.nn as nn
from tensorboardX import SummaryWriterclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.conv1 = nn.Sequential( # input_size=(1*28*28)nn.Conv2d(1, 6, 5, 1, 2),nn.ReLU(), # (6*28*28)nn.MaxPool2d(kernel_size=2, stride=2), # output_size=(6*14*14))self.conv2 = nn.Sequential(nn.Conv2d(6, 16, 5),nn.ReLU(), # (16*10*10)nn.MaxPool2d(2, 2) # output_size=(16*5*5))self.fc1 = nn.Sequential(nn.Linear(16 * 5 * 5, 120),nn.ReLU())self.fc2 = nn.Sequential(nn.Linear(120, 84),nn.ReLU())self.fc3 = nn.Linear(84, 10)# 定义前向传播过程,输入为xdef forward(self, x):x = self.conv1(x)x = self.conv2(x)# nn.Linear()的输入输出都是维度为一的值,所以要把多维度的tensor展平成一维x = x.view(x.size()[0], -1)x = self.fc1(x)x = self.fc2(x)x = self.fc3(x)return xdummy_input = torch.rand(13, 1, 28, 28) # 假设输入13张1*28*28的图片
model = LeNet()
with SummaryWriter('runs/graph') as w:w.add_graph(model, dummy_input)writer = SummaryWriter('policy_save/runs/scalar_example')
for i in range(100):writer.add_scalar('quadratic', i * 2, global_step=i)writer.add_scalar('exponential', 1.2 * i, global_step=i)writer = SummaryWriter('policy_save/runs/another_scalar_example')
for i in range(100):writer.add_scalar('quadratic', i**2, global_step=i)writer.add_scalar('exponential', 1.2**i, global_step=i)
终端输入命令:tensorboard --logdir=./runs/graph
点击网页查看可视化界面
4) 图片 image (pillow库支持)
5) 嵌入向量embedding
Pytorch学习-tensorboard的使用相关推荐
- pytorch学习笔记(4):tensorboard可视化
参考文档:https://mp.weixin.qq.com/s/UYnBRU2b0InzM9H1xl4b4g 在之前的第二篇笔记中,我们实现了一个 CNN 网络,在 mnist 上通过两个卷积层完成分 ...
- Pytorch使用Tensorboard记录loss曲线 (Tensorboard学习二)
关于Tensorboard的基本使用方法可以参考:Pytorch 配置 Tensorboard 可视化学习(一) 对于一个基本模型: import torch import torch.nn as n ...
- PyTorch学习笔记2:nn.Module、优化器、模型的保存和加载、TensorBoard
文章目录 一.nn.Module 1.1 nn.Module的调用 1.2 线性回归的实现 二.损失函数 三.优化器 3.1.1 SGD优化器 3.1.2 Adagrad优化器 3.2 分层学习率 3 ...
- 2_初学者快速掌握主流深度学习框架Tensorflow、Keras、Pytorch学习代码(20181211)
初学者快速掌握主流深度学习框架Tensorflow.Keras.Pytorch学习代码 一.TensorFlow 1.资源地址: 2.资源介绍: 3.配置环境: 4.资源目录: 二.Keras 1.资 ...
- PyTorch学习笔记(七):PyTorch可视化
PyTorch可视化 往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: PyTorch学习笔记(一) ...
- # PyTorch学习笔记(15)--神经网络模型训练实战
PyTorch学习笔记(15)–神经网络模型训练实战 本博文是PyTorch的学习笔记,第15次内容记录,主要是以一个实际的例子来分享神经网络模型的训练和测试的完整过程. 目录 PyTorch ...
- Pytorch求索(1):pytorch与Tensorboard的结合使用
pytorch与tensorboard结合使用 Tensorboard Tensorboard一般都是作为tf的可视化工具,与tf深度集成,它能够展现tf的网络计算图,绘制图像生成的定量指标图以及附加 ...
- PyTorch学习笔记(10)--搭建简单的神经网络以及Sequential的使用
PyTorch学习笔记(10)–搭建简单的神经网络以及Sequential的使用 本博文是PyTorch的学习笔记,第10次内容记录,主要搭建一个简单的神经网络,并介绍Sequential的使 ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
最新文章
- 又一位!26岁当上985博导,读博期间也曾两次想要退学......
- MATLAB中repmat是什么,在NumPy中,MATLAB的repmat是什么?
- SQL Server 2008备份数据库失败,拒绝访问的原因
- 665. 非递减数列
- 服务器怎么控制忽略样式_使用JavaScript来编写你的CSS样式代码——JSS
- C/C++ stack栈的理解以及使用
- java按时间范围过滤_按日期范围在WooCommerce中过滤产品
- 背包九讲--01背包
- densepose的IUV图像I通道数字与身体部分对应关系
- 文件上传到ftp服务器命令,ftp上传文件到服务器命令
- Hi3861网络通信——UDP收发
- Android百度地图+OSS图片拍照上传+导航+idea
- Frontend Development
- 开放式激光振镜+运动控制器(三):振镜矫正
- 实验四: IPv6路由选择协议配置
- WEB介绍(beego)
- CoreData里的增删改查
- 基于proteus的花样流水灯的设计(仅供参考)
- leecode:977. 有序数组的平方
- IIS应用程序池自动回收