PyTorch学习笔记 6.可视化工具visdom
ztj100 2024-11-14 19:22 25 浏览 0 评论
一、visdom 简介
visdom 是Facebook 为PyTorch 打造的一款可视化工具,在2017年开源,代码地址:
https://github.com/fossasia/visdom,国内也可以使用其代码镜像:
https://gitee.com/mirrors/Visdom?_from=gitee_search
二、一些概念及简单使用
1. env 环境
visdom默认环境称为main,可以在使用时指定其它环境。不同用户、不同程序一般使用不同的环境。不同环境的可视化结果互相隔离、互不影响。
2. pane 窗格
可以大概理解为GUI编程的的一个Frame区域。一个环境里可以使用不同的窗格,每个窗格可视化或记录某一信息。
3. 安装
注意使用 visdom 要在操作系统GUI环境下。
pip install visdom
安装完以后,要通过下面命令启动visdom服务:
python -m visom.server
# 或直接用命令:
visdom
如果在linux环境下可以使用下面命令将服务放到后台运行:
nohup python -m visdom.server &
visdom会启动一个web服务,默认端口号8097。客户端与web server使用tornado通讯。
启动后,通过浏览器可以打开网址:
http://localhost:8097
4. 一些启动操作
-port: WEB服务端口
-hostname: 运行服务器的主机名
-base_url: 基础服务器网址(默认 = /)
-env_path: 重新加载环境的路径
-logging_level: 记录级别(默认 = INFO)。接受标准文本和数字记录值
-readonly: 标志以读取模式启动服务器
-enable_login: 需要用户名和密码才能登录
-force_new_cookie: 标记重置服务器使用的安全 Cookie,使当前登录 Cookie 无效。需要。-enable_login
-bind_local: 限制本机才能访问
5. 运行demo
克隆官网demo,运行里面的demo:
git clone https://gitee.com/mirrors/Visdom.git
cd Visdom
python3 demo.py
在网页上显示:
三、一些输出项
1. Plotly提供的可视化API接口
vis.scatter : 2D 或 3D 散点图
vis.line : 线图
vis.stem : 茎叶图
vis.heatmap : 热力图
vis.bar : 条形图
vis.histogram: 直方图
vis.boxplot : 箱型图
vis.surf : 表面图
vis.contour : 轮廓图
vis.quiver : 绘出二维矢量场
vis.image : 图片
vis.text : 文本
vis.mesh : 网格图
vis.save : 序列化状态
2. 基础环境接口
Visdom 提供以下基础的环境接口:
vis.image : image
vis.images : list of images
vis.text : arbitrary HTML
vis.properties : properties grid
vis.audio : audio
vis.video : videos
vis.svg : SVG object
vis.matplot : matplotlib plot
vis.save : serialize state server-side
3. 环境操作API
关闭: 关闭一个窗口 id
vis.delete_env:删除指定环境
vis.win_exists:检查是否有窗口已经存在
vis.get_env_list:获取服务器上所有环境的列表
vis.win_hash: 获取窗口内容的 md5 哈希值
vis.get_window_data:获取窗口的当前数据
vis.check_connection:检查服务器是否连接
vis.replay_log:重播所提供的日志文件中的操作
4. 文本
import visdom
vis = visdom.Visdom(env=u'test1')
vis.text('Hello World', win='text1')
显示结果:
追回文本:
5. 绘制折线图
import visdom
import torch
from visdom import Visdom
import numpy as np
# 新建名为'test3'的环境
viz = Visdom(env='test3')
arr = np.random.rand(10)
# Numpy Array
viz.line(Y=arr)
# Python List
viz.line(Y=list(arr))
# PyTorch tensor
viz.line(Y=torch.Tensor(arr))
6. 绘制一个通用图(输入dict字典)
import visdom
vis = visdom.Visdom()
trace = dict(x=[1, 2, 3], y=[4, 5, 6], mode="markers+lines", type='custom',
marker={'color': 'red', 'symbol': 104, 'size': "10"},
text=["one", "two", "three"], name='1st Trace')
layout = dict(title="First Plot", xaxis={'title': 'x1'}, yaxis={'title': 'x2'})
vis._send({'data': [trace], 'layout': layout, 'win': 'mywin'})
7. 折线显示torch的一组数据
显示pytorch一段可视化代码:
import visdom
import torch
# 指定环境
vis=visdom.Visdom(env=u'test1')
x = torch.arange(1,30,0.01)
y=torch.sin(x)
vis.line(X=x, Y=y, win='sinx', opts={'title':'y=sin(x)'})
输出结果:
8. 折线显示一个张量
import visdom
import torch
vis = visdom.Visdom(env=u'test2')
for i in range(10):
vis.line(X=torch.FloatTensor([i]), Y=torch.FloatTensor([i**2]), win='loss', update='append' if i> 0 else None)
9. 显示一个全为1的矩阵图形
import visdom
import numpy as np
vis = visdom.Visdom(env='test4')
vis.text('test4', win='main')
vis.image(np.ones((3, 100, 100)))
10. append 增加数据
import visdom
import numpy as np
import time
vis = visdom.Visdom(env='test5')
# 利用update更新图像 update更新图像,append新增,replace 使用新数据,remove用于删除“name”中指定的跟踪
x = 0
y = 0
my_win = vis.line(X=np.array([x]), Y=np.array([y]), opts=dict(title='Update'))
for i in range(10):
time.sleep(1)
x += 1
y += i
vis.line(X=np.array([x]), Y=np.array([y]), win=my_win, update='append')
11. video显示视频
# coding=utf-8
import time
from visdom import Visdom
import requests
import os
import numpy as np
viz = Visdom(server='http://127.0.0.1', port=8097)
assert viz.check_connection()
# 视频下载可能比较慢,耐心等几分中
video_file = "demo.ogv"
if not os.path.exists(video_file):
video_url = 'http://www.jplayer.org/video/ogv/Big_Buck_Bunny_Trailer.ogv'
res = requests.get(video_url)
with open(video_file, "wb") as f:
f.write(res.content)
viz.video(videofile=video_file)
time.sleep(1000*10)
显示视频需要浏览器的支持, 我没有测试成功。
12. 生成彩色随机图片
import visdom
import torch
# 新建一个连接客户端
# 指定env = 'test1',默认是'main',注意在浏览器界面做环境的切换
vis = visdom.Visdom(env='test6')
# 绘制4张图片随机的彩色图片
vis.images(torch.randn(4, 3, 128, 128).numpy(), nrow=2, win='imgs', opts={'title': 'imgs'})
13. 其它一些输出项
- vis.properties 在窗格中显示可编辑的属性
- vis.audio 播放音频
- vis.svg 绘制一个SVG对象
- vis.matplot 此函数绘制Matplotlibplot
- vis.plotlyplot 绘制一个Plotly图对象
- vis.embeddings 使用Barnes-Hut t-SNE算法)可视化一组特征
- vis.save 保存在visdom服务器上仍然有效的环境
- vis.scatter 绘制2D或3D散点图
- vis.stem 此函数绘制stem图
- vis.heatmap 绘制热图
- vis.bar 绘制规则的,堆叠的或分组的条形图
- vis.histogram 绘制指定数据的直方图
- vis.boxplot 绘制指定数据的箱形图
- vis.surf 绘制表面图
- vis.contour 绘制轮廓图
- vis.quiver 绘制一个抖动图
- vis.close 关闭特定的窗口
- vis.delete_env 完全删除指定的环境
- vis.fork_env 派生类似于UI功能的环境
- vis.win_exists 该函数返回一个布尔值,指示服务器上是否已经存在指定窗口"win"
- vis.get_env_list 此函数在调用时返回服务器上所有环境的列表
- vis.win_hash 如果服务器上存在窗口"win"的内容,则此函数返回md5哈希值。否则返回None
- vis.replay_log 此函数获取虚拟日志的内容,并将其重播到当前服务器以恢复状态或处理所有丢失的条目。
相关推荐
- Jquery 详细用法
-
1、jQuery介绍(1)jQuery是什么?是一个js框架,其主要思想是利用jQuery提供的选择器查找要操作的节点,然后将找到的节点封装成一个jQuery对象。封装成jQuery对象的目的有...
- 前端开发79条知识点汇总
-
1.css禁用鼠标事件2.get/post的理解和他们之间的区别http超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。HTTP的工作方式是客户机与服务器之间的请求-应答协议。...
- js基础面试题92-130道题目
-
92.说说你对作用域链的理解参考答案:作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。...
- Web前端必备基础知识点,百万网友:牛逼
-
1、Web中的常见攻击方式1.SQL注入------常见的安全性问题。解决方案:前端页面需要校验用户的输入数据(限制用户输入的类型、范围、格式、长度),不能只靠后端去校验用户数据。一来可以提高后端处理...
- 事件——《JS高级程序设计》
-
一、事件流1.事件流描述的是从页面中接收事件的顺序2.事件冒泡(eventbubble):事件从开始时由最具体的元素(就是嵌套最深的那个节点)开始,逐级向上传播到较为不具体的节点(就是Docu...
- 前端开发中79条不可忽视的知识点汇总
-
过往一些不足的地方,通过博客,好好总结一下。1.css禁用鼠标事件...
- Chrome 开发工具之Network
-
经常会听到比如"为什么我的js代码没执行啊?","我明明发送了请求,为什么反应?","我这个网站怎么加载的这么慢?"这类的问题,那么问题既然存在,就需要去解决它,需要解决它,首先我们得找对导致问题的原...
- 轻量级 React.js 虚拟美化滚动条组件RScroll
-
前几天有给大家分享一个Vue自定义滚动条组件VScroll。今天再分享一个最新开发的ReactPC端模拟滚动条组件RScroll。...
- 一文解读JavaScript事件对象和表单对象
-
前言相信做网站对JavaScript再熟悉不过了,它是一门脚本语言,不同于Python的是,它是一门浏览器脚本语言,而Python则是服务器脚本语言,我们不光要会Python,还要会JavaScrip...
- Python函数参数黑科技:*args与**kwargs深度解析
-
90%的Python程序员不知道,可变参数设计竟能决定函数的灵活性和扩展性!掌握这些技巧,让你的函数适应任何场景!一、函数参数设计的三大进阶技巧...
- 深入理解Python3密码学:详解PyCrypto库加密、解密与数字签名
-
在现代计算领域,信息安全逐渐成为焦点话题。密码学,作为信息保护的关键技术之一,允许我们加密(保密)和解密(解密)数据。...
- 阿里Nacos惊爆安全漏洞,火速升级!(附修复建议)
-
前言好,我是threedr3am,我发现nacos最新版本1.4.1对于User-Agent绕过安全漏洞的serverIdentitykey-value修复机制,依然存在绕过问题,在nacos开启了...
- Python模块:zoneinfo时区支持详解
-
一、知识导图二、知识讲解(一)zoneinfo模块概述...
- Golang开发的一些注意事项(一)
-
1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...
- Python鼠标与键盘自动化指南:从入门到进阶——键盘篇
-
`pynput`是一个用于控制和监控鼠标和键盘的Python库...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)