1、pytorch与tensorboard结合使用
Tensorboard
Tensorboard通常都是做为tf的可视化工具,与tf深度集成,它可以展示tf的网络计算图,绘制图像生成的定量指标图以及附加数据等。此外,Tensorboard也是一个独立工具,只要保存的数据遵循必定的格式,Tensorboard就能够读取这些数据并进行可视化
Tensorboard_logger
Tensorboard_logger是TeamHGMemex开发的一款轻量级工具,它将Tensorboard的工具抽取出来,使得非tf用户也可使用它进行可视化,不过功能有限,但一些经常使用的仍是能够支持。
安装
1.安装tensorflow:
建议安装cpu-onlu版本(由于本人pytorch安装的是GPU版本,避免在同一个虚拟环境下包冲突),能够选择直接pip安装
2.安装tensorboard_logger:
安装十分简单,能够经过 pip install tensorboard_logger 命令直接安装
如何使用
1.首先启动Tensorboard,命令格式以下:
tensorboard --logdir <your/running/dir> --port <your_bind_port>
例如命令是:
tensorboard --logdir /home/tenyun/Documents/Githome/pytorch_home/ --port 1234
这里选择端口的时候,必定要注意,不能选择被占用的端口
启动成功后,控制台以下输出:
TensorBoard 1.11.0 at http://TenYun:1234(Press CTRL+C to quit)
2.代码中使用
from tensorboard_logger import Logger # 构建logger对象,logdir用来指定log文件的保存路径 # flush_secs用来指定刷新同步间隔 logger = Logger(logdir="/home/tenyun/Documents/Githome/pytorch_home", flush_secs=2) # 模拟函数 for ii in range(100): logger.log_value('loss', 10-ii**0.5, step=ii) logger.log_value('accuracy', ii**0.5/10, step=ii)
3.查看结果
2、visdom
基本概念
Visdom有一些简单的特性,咱们能够根据这个特性来构建属于本身的特定的例程(use-cases)。
①Panes(窗格)
当你刚刚打开UI会发现,这是个白板,只有一片蓝色,别的啥都没有…。咱们能够用图形、图像和文本填充它。
注意,
不管是文本仍是图像、视频,都须要放在一个叫作pane的container里面,你能够对这些pane(窗口)拖拽,缩放以及删除。
其中,pane存在于envs,envs的 status(状态)能够跨sessions(会话)保存。
此外,pane还支持callbacks(回调函数),也就是说,当你在一个pane上输入一些内容, 若是后端写好了对应的处理逻辑,那么callbacks会要求Visdom对象接收前端传来的输入给后端的处理代码,并将处理后的结果返回到前端显示,也就是pane能够支持交互~
② Enviroments环境
UI的左上角,有一条这样的东西:
这是可视化空间所在的环境(envs)——能够理解为①中pane所在的context。
默认状况下,每一个用户会拥有一个叫作main的env。
若是有额外的需求,好比要在不一样的环境中展现多种层次的内容,用户能够在UI(前端)或者后端建立新的env。环境变量的状态被长期保存。
咱们能够在UI任意的切换不一样的环境(env)。当你选择了一个新的env,visdom将会向服务器请求存在于该env中的图像。
在 env selector(环境选择器)后面,有一个小的橡皮擦eraser button,用户可使用它来清除当前env下的全部内容。若是你的展现是动态的,也就是数据源源不断须要展现,那么后续的图像会 继续展现在此env下。
③State——状态
当你在某些env下建立了一些可视化图像内容后,服务器会自动缓存这些可视化结果(设置checkpoint)。若是你从新加载此页面或者从新打开服务器,这些图像内容会重现的。
固然,你也能够手动的保存这些env的状态:
- save: 能够序列化env的状态,并以json文件保持在磁盘中。
- fork: 当输入一个新的名字,会复制当前的状态到这个new env下。
④ Filter——过滤
这个功能挺容易理解的:就是根据你在filter窗口的输入(右上角)对当前env下全部windows的title进行字符串正则匹配,只显示该env下跟输入的图像名字匹配的图像
总结:
明确几个名词:
使用Visdom就是在env中的pane上画图
区别参数env和win:
- env是Visdom的参数,指定环境的名字,默认有个叫main的环境
- win(和opts)是vis中几乎全部函数都有的参数,指定pane的名字,建议每次操做都指定win
补充:
- opts用来可视化设置,接收一个字典。通用的一些配置:主要用于设置pane的显示格式
options.title
options.xlabel
options.ylabel
options.width
1.指定参数 update=‘append’
2.使用vis.updateTrace方法更新图
安装(setup)& 启动例子(demo)
个人是python3.x,直接pip install visdom便可。
安装后,不须要代码写好,就能够在命令行里面跑visdom。
启动方法: python -m visdom.server 或者直接敲 visdom,刚执行的时候,会开始下载一些脚本,须要等待一会
而后试一段代码:
import visdom import numpy as np vis = visdom.Visdom() vis.text('Hello, world!') vis.image(np.ones((3, 10, 10)))
上述代码运行后,打开浏览器,输入:html
看看结果怎么样前端
再试一下其余代码:
import torch as t import visdom as vis v=vis.Visdom(env='linetest') x=t.arange(1,30,0.01) y=t.sin(x) v.line(X=x,Y=y,win='sinx',opts={'title':'y.sin(x)'})
可视化接口
尽管大多数API 的输入包含,一个tensor X(保存数据)和一个可选的tensor Y(保存标签或者时间戳)。
全部的绘图函数都接收一个可选参数win,用来将图画到一个特定的pane上。每一个绘图函数也会返回当前绘图的win。您也能够指定 汇出的图添加到哪一个env上。
三个经常使用到的函数以下:
line:
这个函数用来画 线图。记录标量的变化如:损失、准确率。它须要一个形状为N或者N×M的tensor Y,用来指定 M条线的值(每条线上有N个点)。和一个可供选择的 tensor X 用来指定对应的 x轴的值; X能够是一个长度为N的tensor(这种状况下,M条线共享同一个 x轴),也能够是形状和Y同样的tensor。
The following options are supported:
options.fillarea : 填充线下面的区域 (boolean)
options.colormap : 色图 (string; default = 'Viridis')
options.markers : 显示点标记 (boolean; default = false)
options.markersymbol: 标记的形状 (string; default = 'dot')
options.markersize : 标记的大小 (number; default = '10')
options.legend : 保存图例名字的 table
image:
这个函数用来画 图片。能够是输入的图片、GAN生成的图片、卷积核的信息
输入:
img(tensor): shape(C*H*W)。
支持下面特定选项:
options.jpgquality: JPG quality (number 0-100; default = 100)
import torch as t import visdom as vis v=vis.Visdom() #可视化一张随机的黑白图片 v.image(t.randn(64,64),win='random1’) #可视化一张随机的彩色图片 v.image(t.randn(3,64,64),win='random2’) #可视化36张随机彩色图片,每一张6行 v.images( t.randn(36,3,64,64).numpy(), nrow=6, win='rnadom3', opts={'title':'random_img'})
text:
此函数可在文本框中打印文本。输入输入一个text字符串。目前不支持特定的options. python
该函数支持全部的html标签,也遵循语法标准,换行要使用<br>json
剩下的之后再补充。。。windows
原文出处:https://www.cnblogs.com/yh-blog/p/12345170.html后端