一、pytorch与tensorboard结合使用

Tensorboard

Tensorboard一般都是作为tf的可视化工具,与tf深度集成,它能够展现tf的网络计算图,绘制图像生成的定量指标图以及附加数据等。此外,Tensorboard也是一个独立工具,只要保存的数据遵循一定的格式,Tensorboard就可以读取这些数据并进行可视化
  • 将网络结构、动态数值以 protocol buffer 格式写到文件里。
  • 读取网络结构、读取动态数值,并展示在浏览器中。

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.查看结果
运行以后,到浏览器输入: http://localhost:1234,注意换成你绑定的端口,可以看到结果。
 

二、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下跟输入的图像名字匹配的图像
 
 

总结:

明确几个名词:
  • env:看作一个大容器,在代码中是 vis=visdom.Visdom(env=''main)
  • pane: 就是用于绘图的小窗口,在代码中叫 window
使用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)))

上述代码运行后,打开浏览器,输入:

http://localhost:8097

看看结果怎么样

 
 
再试一下其他代码:

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)'})
 
 

可视化接口

 
Visdom支持下列API。由Plotly提供可视化支持。
  • vis.scatter : 2D 或 3D 散点图
  • vis.line : 线图

    PyTorch可视化——tensorboard、visdom的更多相关文章

    1. pytorch可视化工具visdom

      visdom的github repo: https://github.com/facebookresearch/visdom 知乎一个教程:https://zhuanlan.zhihu.com/p/3 ...

    2. 可视化利器Visdom

      可视化利器Visdom 最近在使用Pytorch炼丹,单纯地看命令行输出已经无法满足调试的需求,尝试了facebook开源的visdom,感觉非常优雅,支持numpy和torch 安装 $ pip i ...

    3. 可视化Tensorboard图中的符号意义

      可视化Tensorboard图中的符号意义

    4. TensorFlow笔记-可视化Tensorboard

      可视化Tensorboard •数据序列化-events文件 TensorBoard 通过读取 TensorFlow 的事件文件来运行 •tf.summary.FileWriter('/tmp/ten ...

    5. 吴裕雄 python 神经网络——TensorFlow 训练过程的可视化 TensorBoard的应用

      #训练过程的可视化 ,TensorBoard的应用 #导入模块并下载数据集 import tensorflow as tf from tensorflow.examples.tutorials.mni ...

    6. Tensorflow机器学习入门——网络可视化TensorBoard

      一.在代码中标记要显示的各种量 tensorboard各函数的作用和用法请参考:https://www.cnblogs.com/lyc-seu/p/8647792.html import tensor ...

    7. Pytorch可视化指定层(Udacity)

      import cv2 import matplotlib.pyplot as plt %matplotlib inline # TODO: Feel free to try out your own ...

    8. 矩池云上使用Visdom可视化图像说明

      租用机器添加默认端口 点击展开高级选项 点击添加端口配置 添加Visdom默认端口,选择 http 端口填入 8097 进入环境安装并使用 JupyterLab 链接 是本次实验用来安装实验的工具 H ...

    9. 总结笔记 | 深度学习之Pytorch入门教程

      笔记作者:王博Kings 目录 一.整体学习的建议 1.1 如何成为Pytorch大神? 1.2 如何读Github代码? 1.3 代码能力太弱怎么办? 二.Pytorch与TensorFlow概述 ...

    随机推荐

    1. APICloud开发者进阶之路 | UIPickerView 模块示例demo

      本文出自APICloud官方论坛 rongCloud2  3.2.8 版本更新后添加了发送小视频接口,发送文件接口. rongCloud2  概述 融云是国内首家专业的即时通讯云服务提供商,专注为互联 ...

    2. 树 dfs暴力判环 题意转化

      以后还是要多做题啊 这一道题我把题目想的太简单了 用并查集做了一波 但是忘了一种情况 就是同一个树上可能会有环 这就不太对了 而且还不要忘了 一棵树的根节点是一个自环 也就是说这一题的答案就是    ...

    3. python3复习

      一.基础11.运行python代码cmd->python 文件路径/文件名称2.解释器针对linux/uinux系统3.注释单行注释    #多行注释    三个单引号或三个双引号4.变量法律规 ...

    4. ORM跨表查询总结

      一.基于对象的查询-->子查询 1.一对多 正向查询:基于 字段 反向查询:基于 表名__set.all() 注意:表名全部小写 2.多对多 正向查询:基于 字段.all() 反向查询:基于 表 ...

    5. MySql 常用时间函数

      1.date() 提取日期或日期时间表达式的日期部分 select date(create_time) from blog_article; 2.date_format() select date_f ...

    6. C#图片采集软件 自动翻页 自动分类(收集美图必备工具)(一)

      网站管理员希望将别人的整站数据下载到自己的网站里或者将别人网站的一些内容保存到自己的服务器上.从内容中抽取相关的字段,发布到自己的网站系统中.有时需要将网页相关的文件也保存到本地,如图片.附件等. 图 ...

    7. ASP.NET Cookie是怎么生成的

      ASP.NET Cookie是怎么生成的 可能有人知道Cookie的生成由machineKey有关,machineKey用于决定Cookie生成的算法和密钥,并如果使用多台服务器做负载均衡时,必须指定 ...

    8. Flsak学习笔记(1)

      Day 01 最近项目里要用python写后端,同学推荐了flask框架就来学一学.写这个博客的目的主要是记录一下自己学习的内容,有基础知识忘了不用一个个去百度,还有就是跟大家分享一下,有不是很容易理 ...

    9. Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件

      MyBatis 今天大年初一,你在学习!不学习做什么,斗地主...人都凑不齐.学习吧,学习使我快乐!除了诗和远方还有责任,我也想担当,我也想负责,可臣妾做不到啊,怎么办?你说怎么办,为啥人家能做到你做 ...

    10. SSM框架整合中,不报错,数据库只能存ID进去问题解决

      嗯,这个错误其实不能算错误,是粗心造成的,在配置文件中对于传递的参数没有写#字符,直接写的的属性名.居然错了两次,哎!!! 嗯,还有一个问题,在动态SQL中,if标签中test属性中判断时,不能用大写 ...