30_visdom可视化、TensorboardX及其案例、安装visdom、使用visdom的案例
1.25.visdom可视化
1.25.1.TensorboardX
Pytorch也能用的tensorboard,此外Pytorch还有visdom可视化。
首先上项目地址:https://github.com/lanpa/tensorboardX
1.25.2.安装
(base) C:\Users\toto>pip install tensorboardX
Collecting tensorboardXDownloading tensorboardX-2.1-py2.py3-none-any.whl (308 kB)|████████████████████████████████| 308 kB 726 kB/s
Requirement already satisfied: six in d:\installed\anaconda3\lib\site-packages (from tensorboardX) (1.12.0)
Requirement already satisfied: protobuf>=3.8.0 in d:\installed\anaconda3\lib\site-packages (from tensorboardX) (3.12.1)
Requirement already satisfied: numpy in d:\installed\anaconda3\lib\site-packages (from tensorboardX) (1.20.1)
Requirement already satisfied: setuptools in d:\installed\anaconda3\lib\site-packages (from protobuf>=3.8.0->tensorboardX) (41.4.0)
Installing collected packages: tensorboardX
Successfully installed tensorboardX-2.1(base) C:\Users\toto>
或者从源码中build
pip install 'git+https://github.com/lanpa/tensorboardX'
您可以选择安装crc32c来加速。
(base) C:\Users\toto>pip install crc32c
Collecting crc32cDownloading crc32c-2.2-cp37-cp37m-win_amd64.whl (31 kB)
Installing collected packages: crc32c
Successfully installed crc32c-2.2(base) C:\Users\toto>
从tensorboardX 2.1开始,你需要为add_audio()函数安装soundfile(200倍加速)。
(base) C:\Users\toto>pip install soundfile
Collecting soundfileDownloading SoundFile-0.10.3.post1-py2.py3.cp26.cp27.cp32.cp33.cp34.cp35.cp36.pp27.pp32.pp33-none-win_amd64.whl (689 kB)|████████████████████████████████| 689 kB 117 kB/s
Requirement already satisfied: cffi>=1.0 in d:\installed\anaconda3\lib\site-packages (from soundfile) (1.12.3)
Requirement already satisfied: pycparser in d:\installed\anaconda3\lib\site-packages (from cffi>=1.0->soundfile) (2.19)
Installing collected packages: soundfile
Successfully installed soundfile-0.10.3.post1(base) C:\Users\toto>
1.25.3.例子
克隆文件:https://github.com/lanpa/tensorboardX/tree/master/examples
运行demo脚本:python examples/demo.py
运行TensorBoard可以用:tensorboard --logdir runs
在下面可能运行:
(base) C:\Users\toto>tensorboard --logdir runs
2021-02-12 13:35:13.345643: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll
Traceback (most recent call last):
ValueError: Duplicate plugins for name projector
例子:
# -*- coding: UTF-8 -*-import torch
import torchvision.utils as vutils
import numpy as np
import torchvision.models as models
from torchvision import datasets
from tensorboardX import SummaryWriterresnet18 = models.resnet18(False)
writer = SummaryWriter()
sample_rate = 44100
freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440]for n_iter in range(100):dummy_s1 = torch.rand(1)dummy_s2 = torch.rand(1)# data grouping by `slash`writer.add_scalar('data/scalar1', dummy_s1[0], n_iter)writer.add_scalar('data/scalar2', dummy_s2[0], n_iter)writer.add_scalars('data/scalar_group', {'xsinx': n_iter * np.sin(n_iter),'xcosx': n_iter * np.cos(n_iter),'arctanx': np.arctan(n_iter)}, n_iter)dummy_img = torch.rand(32, 3, 64, 64) # output from networkif n_iter % 10 == 0:x = vutils.make_grid(dummy_img, normalize=True, scale_each=True)writer.add_image('Image', x, n_iter)dummy_audio = torch.zeros(sample_rate * 2)for i in range(x.size(0)):# amplitude of sound should in [-1, 1]dummy_audio[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i) / float(sample_rate))writer.add_audio('myAudio', dummy_audio, n_iter, sample_rate=sample_rate)writer.add_text('Text', 'text logged at step:' + str(n_iter), n_iter)for name, param in resnet18.named_parameters():writer.add_histogram(name, param.clone().cpu().data.numpy(), n_iter)# needs tensorboard 0.4RC or laterwriter.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand(100), n_iter)dataset = datasets.MNIST('mnist', train=False, download=True)
images = dataset.test_data[:100].float()
label = dataset.test_labels[:100]features = images.view(100, 784)
writer.add_embedding(features, metadata=label, label_img=images.unsqueeze(1))# export scalar data to JSON for external processing
writer.export_scalars_to_json("./all_scalars.json")
writer.close()
1.25.4.安装visdom
(base) C:\Users\toto>pip install visdom
Collecting visdomDownloading visdom-0.1.8.9.tar.gz (676 kB)|████████████████████████████████| 676 kB 27 kB/s
Requirement already satisfied: numpy>=1.8 in d:\installed\anaconda3\lib\site-packages (from visdom) (1.18.5)
Requirement already satisfied: scipy in d:\installed\anaconda3\lib\site-packages (from visdom) (1.4.1)
Requirement already satisfied: requests in d:\installed\anaconda3\lib\site-packages (from visdom) (2.22.0)
Requirement already satisfied: tornado in d:\installed\anaconda3\lib\site-packages (from visdom) (6.0.3)
Requirement already satisfied: pyzmq in d:\installed\anaconda3\lib\site-packages (from visdom) (18.1.0)
Requirement already satisfied: six in d:\installed\anaconda3\lib\site-packages (from visdom) (1.15.0)
Collecting jsonpatchDownloading jsonpatch-1.28-py2.py3-none-any.whl (12 kB)
Collecting torchfileDownloading torchfile-0.1.0.tar.gz (5.2 kB)
Collecting websocket-clientDownloading websocket_client-0.57.0-py2.py3-none-any.whl (200 kB)|████████████████████████████████| 200 kB 20 kB/s
Requirement already satisfied: pillow in d:\installed\anaconda3\lib\site-packages (from visdom) (6.2.0)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in d:\installed\anaconda3\lib\site-packages (from requests->visdom) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in d:\installed\anaconda3\lib\site-packages (from requests->visdom) (1.24.2)
Requirement already satisfied: idna<2.9,>=2.5 in d:\installed\anaconda3\lib\site-packages (from requests->visdom) (2.8)
Requirement already satisfied: certifi>=2017.4.17 in d:\installed\anaconda3\lib\site-packages (from requests->visdom) (2019.9.11)
Collecting jsonpointer>=1.9Downloading jsonpointer-2.0-py2.py3-none-any.whl (7.6 kB)
Building wheels for collected packages: visdom, torchfileBuilding wheel for visdom (setup.py) ... doneCreated wheel for visdom: filename=visdom-0.1.8.9-py3-none-any.whl size=655249 sha256=aa110012ea279783c86dcbc7778c90e8d4c021e5d9ac1a98f68c3134b7c52627Stored in directory: c:\users\toto\appdata\local\pip\cache\wheels\2d\d1\9b\cde923274eac9cbb6ff0d8c7c72fe30a3da9095a38fd50bbf1Building wheel for torchfile (setup.py) ... doneCreated wheel for torchfile: filename=torchfile-0.1.0-py3-none-any.whl size=5711 sha256=ac722c7bbb17ae1c36bef8db4b20cd6978462f240d76c5b6b0a4dfc6719db2b4Stored in directory: c:\users\toto\appdata\local\pip\cache\wheels\ac\5c\3a\a80e1c65880945c71fd833408cd1e9a8cb7e2f8f37620bb75b
Successfully built visdom torchfile
Installing collected packages: jsonpointer, jsonpatch, torchfile, websocket-client, visdom
Successfully installed jsonpatch-1.28 jsonpointer-2.0 torchfile-0.1.0 visdom-0.1.8.9 websocket-client-0.57.0(base) C:\Users\toto>
1.25.5.后台运行visdom.server
(base) C:\Users\toto>pip install visdom -i https://pypi.tuna.tsinghua.edu.cn/simple
Collecting visdomDownloading visdom-0.1.8.9.tar.gz (676 kB)|████████████████████████████████| 676 kB 27 kB/s
Requirement already satisfied: numpy>=1.8 in d:\installed\anaconda3\lib\site-packages (from visdom) (1.18.5)
Requirement already satisfied: scipy in d:\installed\anaconda3\lib\site-packages (from visdom) (1.4.1)
Requirement already satisfied: requests in d:\installed\anaconda3\lib\site-packages (from visdom) (2.22.0)
Requirement already satisfied: tornado in d:\installed\anaconda3\lib\site-packages (from visdom) (6.0.3)
Requirement already satisfied: pyzmq in d:\installed\anaconda3\lib\site-packages (from visdom) (18.1.0)
Requirement already satisfied: six in d:\installed\anaconda3\lib\site-packages (from visdom) (1.15.0)
Collecting jsonpatchDownloading jsonpatch-1.28-py2.py3-none-any.whl (12 kB)
Collecting torchfileDownloading torchfile-0.1.0.tar.gz (5.2 kB)
Collecting websocket-client
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Installing collected packages: jsonpointer, jsonpatch, torchfile, websocket-client, visdom
Successfully installed jsonpatch-1.28 jsonpointer-2.0 torchfile-0.1.0 visdom-0.1.8.9 websocket-client-0.57.0安装并更新,不更新不能正常使用,会卡在download script。
(base) C:\Users\toto> pip install --upgrade visdom
(base) C:\Users\toto>python -m visdom.server
D:\installed\Anaconda3\lib\site-packages\visdom\server.py:39: DeprecationWarning: zmq.eventloop.ioloop is deprecated in pyzmq 17. pyzmq now works with default tornado and asyncio eventloops.ioloop.install() # Needs to happen before any tornado imports!
Checking for scripts.
如果在启动过程中一直报:Downloading scripts, this may take a little while
一直卡着不动,解决办法是:
- 找到visdom安装位置,我的路径为D:\Anaconda3\Lib\site-packages\visdom,打开sever.py。
- 修改server.py文件,在函数download_scripts_and_run下注释掉download_scripts(),第1917行。
然后再执行,出现如下错误:
(base) C:\Users\toto>python -m visdom.server
D:\installed\anaconda3\lib\site-packages\visdom\server.py:39: DeprecationWarning: zmq.eventloop.ioloop is deprecated in pyzmq 17. pyzmq now works with default tornado and asyncio eventloops.ioloop.install() # Needs to happen before any tornado imports!
It's Alive!
Traceback (most recent call last):File "D:\installed\anaconda3\lib\runpy.py", line 194, in _run_module_as_mainreturn _run_code(code, main_globals, None,File "D:\installed\anaconda3\lib\runpy.py", line 87, in _run_codeexec(code, run_globals)File "D:\installed\anaconda3\lib\site-packages\visdom\server.py", line 1922, in <module>download_scripts_and_run()File "D:\installed\anaconda3\lib\site-packages\visdom\server.py", line 1918, in download_scripts_and_runmain()File "D:\installed\anaconda3\lib\site-packages\visdom\server.py", line 1910, in mainstart_server(port=FLAGS.port, hostname=FLAGS.hostname, base_url=base_url,File "D:\installed\anaconda3\lib\site-packages\visdom\server.py", line 1791, in start_serverapp.listen(port, max_buffer_size=1024 ** 3)File "D:\installed\anaconda3\lib\site-packages\tornado\web.py", line 2116, in listenserver.listen(port, address)File "D:\installed\anaconda3\lib\site-packages\tornado\tcpserver.py", line 152, in listenself.add_sockets(sockets)File "D:\installed\anaconda3\lib\site-packages\tornado\tcpserver.py", line 165, in add_socketsself._handlers[sock.fileno()] = add_accept_handler(File "D:\installed\anaconda3\lib\site-packages\tornado\netutil.py", line 279, in add_accept_handlerio_loop.add_handler(sock, accept_handler, IOLoop.READ)File "D:\installed\anaconda3\lib\site-packages\tornado\platform\asyncio.py", line 100, in add_handlerself.asyncio_loop.add_reader(fd, self._handle_events, fd, IOLoop.READ)File "D:\installed\anaconda3\lib\asyncio\events.py", line 501, in add_readerraise NotImplementedError
NotImplementedError(base) C:\Users\toto>
大概的意思Python3.8的asyncio改变了循环方式,因为这种方式在windows上不支持相应的add_reader APIs,就会抛NotImplementedError。
解决办法是: 找到这个项目使用的python环境的lib\site-packages,做下面的修改,在\Lib\site-packages\tornado\platform\asyncio.py开头添加代码:
import sys #此处如果已经引入过了,不用再引入了。if sys.platform == 'win32':asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
然后在执行命令:
如果期间出现:
Visdom python client failed to establish socket to get messages from the server. This feature is optional
and can be disabled by initializing Visdom with `use_incoming_socket=False`, which will prevent waiting for this request to timeout.
解决办法:
vis = visdom.Visdom(use_incoming_socket=False)
示例:
在这里插入代码片
lines: single trace
from visdom import Visdomviz = Visdom()viz.line([0.],[0.], win='train_loss', opts=dict(title='train loss'))viz.line([loss.item()], [global_step], win='train_loss', update='append')
lines: multi-traces
from visdom import Visdomviz = Visdom()viz.line([[0.0, 0.0]], [0.], win='test', opts=dict(title='test loss&acc.',legend=['loss', 'acc.']))viz.line([[test_loss, correct / len(test_loader.dataset)]],[global_step], win='test', update='append')
visual X
from visdom import Visdomviz = Visdom()viz.images(data.view(-1, 1, 28, 28), win='x')viz.text(str(pred.detach().cpu().numpy()), win='pred', opts=dict(title='pred'))
1.25.6.使用visdom的案例
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transformsfrom visdom import Visdombatch_size=200
learning_rate=0.01
epochs=10train_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=True, download=True,transform=transforms.Compose([transforms.ToTensor(),# transforms.Normalize((0.1307,), (0.3081,))])),batch_size=batch_size, shuffle=True)
test_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=False, transform=transforms.Compose([transforms.ToTensor(),# transforms.Normalize((0.1307,), (0.3081,))])),batch_size=batch_size, shuffle=True)class MLP(nn.Module):def __init__(self):super(MLP, self).__init__()self.model = nn.Sequential(nn.Linear(784, 200),nn.LeakyReLU(inplace=True),nn.Linear(200, 200),nn.LeakyReLU(inplace=True),nn.Linear(200, 10),nn.LeakyReLU(inplace=True),)def forward(self, x):x = self.model(x)return xdevice = torch.device('cuda:0')
net = MLP().to(device)
optimizer = optim.SGD(net.parameters(), lr=learning_rate)
criteon = nn.CrossEntropyLoss().to(device)viz = Visdom()viz.line([0.], [0.], win='train_loss', opts=dict(title='train loss'))
viz.line([[0.0, 0.0]], [0.], win='test', opts=dict(title='test loss&acc.',legend=['loss', 'acc.']))
global_step = 0for epoch in range(epochs):for batch_idx, (data, target) in enumerate(train_loader):data = data.view(-1, 28*28)data, target = data.to(device), target.cuda()logits = net(data)loss = criteon(logits, target)optimizer.zero_grad()loss.backward()# print(w1.grad.norm(), w2.grad.norm())optimizer.step()global_step += 1viz.line([loss.item()], [global_step], win='train_loss', update='append')if batch_idx % 100 == 0:print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item()))test_loss = 0correct = 0for data, target in test_loader:data = data.view(-1, 28 * 28)data, target = data.to(device), target.cuda()logits = net(data)test_loss += criteon(logits, target).item()pred = logits.argmax(dim=1)correct += pred.eq(target).float().sum().item()viz.line([[test_loss, correct / len(test_loader.dataset)]],[global_step], win='test', update='append')viz.images(data.view(-1, 1, 28, 28), win='x')viz.text(str(pred.detach().cpu().numpy()), win='pred',opts=dict(title='pred'))test_loss /= len(test_loader.dataset)print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(test_loss, correct, len(test_loader.dataset),100. * correct / len(test_loader.dataset)))
30_visdom可视化、TensorboardX及其案例、安装visdom、使用visdom的案例相关推荐
- Py之wordcloud:python中非常有趣的词云图wordcloud简介、安装、使用方法、案例应用详细攻略
Py之wordcloud:python中非常有趣的词云图wordcloud简介.安装.使用方法.案例应用详细攻略 目录 wordcloud简介 wordcloud安装 wordcloud使用方法 案例 ...
- ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略
ML之XGBoost:XGBoost算法模型(相关配图)的简介.关键思路.代码实现(目标函数/评价函数).安装.使用方法.案例应用之详细攻略 目录 XGBoost算法模型(相关配图)的简介 1.XGB ...
- 可视化篇(五)——— python绘制热力图及案例
可视化篇(五)--- python绘制热力图及案例 摘要 效果图 python代码 摘要 本文演示了如何通过python绘制热力图,并给出了其应用于展示数据之间相关性的案例供读者参考. 效果图 pyt ...
- linux安装oracle 操作系统内核参数 aio,Oracle Study之案例--安装Oracle内核参数配置
Oracle Study之案例--安装Oracle内核参数配置 在Linux系统下,安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其中最主要的是和内 ...
- linux vps 可视化监控,CentOS 7安装Grafana 4及结合Zabbix3.2实现可视化监控图形
已经介绍了如何在CentOS 7环境下安装Zabbix监控,本章继续介绍在CentOS 7环境下安装Grafana,并结合Zabbix实现可视化监控图形! 简介: Grafana 是 Graphite ...
- python数据可视化的包怎么安装_数据可视化包 - matplotlib
Matplotlib 1,Matplotlib - 介绍 Matplotlib是一个强大的Python绘图和数据可视化的工具包. # 安装方法 pip install matplotlib # 引用方 ...
- k8s可视化管理工具Rancher安装和使用
k8s系列入门级教程-k8s可视化管理工具Rancher安装和使用 <超低成本的k8s集群搭建教程> 使用rke安装企业级k8s集群-待填坑 prometheus+grafana监控搭建教 ...
- VB.net:VB.net编程语言学习之添加引用打包安装项目的简介、案例应用之详细攻略
VB.net:VB.net编程语言学习之添加引用&打包安装项目的简介.案例应用之详细攻略 目录 关于添加引用 1.SW的二次开发,需要引用多个Solidworks库文件即dll文件
- Py之transformers:transformers的简介、安装、使用方法、案例应用之详细攻略
Py之transformers:transformers的简介.安装.使用方法.案例应用之详细攻略 目录 transformers的简介 1.为什么要使用transformers? 2.文档.任务总结 ...
最新文章
- 【AI参赛经验】汉字书法识别比赛经验心得——by:microfat_htu
- python代码使用正则化模块re检查字符串是否只含有要求指定的字符
- 史上最全!27种神经网络简明图解:模型那么多,我该怎么选?
- C#中保存Gif文件设置透明无效果
- SPFILE 、PFILE 的全面解读
- nacos 适配达梦、人大金仓数据库
- java中的异常处理语句_Java中实现异常处理的基础知识
- Laravel配置自带组件实现各类型邮件发送功能的代码实例
- fastdfs原理_搭建分布式文件系统FastDFS集群
- java+mysql+学生课程管理系统的实现
- 海康摄像头不记得登陆密码了怎么办?2020年联系人工客服最新版解答方案
- 卫星电话是直接与卫星通信还是通过地面站?
- openrefine的 General Refine Expression Language(GREL)
- ABBYY软件的OCR文字识别工具有什么用
- c语言快速拼接字符串,C语言拼接字符串
- Harbor启动访问502错误
- JS获取手机型号和系统类型
- matlab colarbar设置,matlab color bar 如何改变色调
- css实现tab切换时下划线动画效果
- OpenGL ES 实现瘦身大长腿效果
热门文章
- python有框架吗_Python几种主流框架
- Python中的time、datetime、calendar模块(时间模块)
- Pandas的学习(4.DataFrame之间的运算以及DataFrame和Series之间的运算)
- VTK:正态估计用法实战
- VTK:vtkCursor2D用法实战
- boost::sort模块实现spreadsort 反向字符串排序示例
- boost::hana::count_if用法的测试程序
- boost::hana::detail::type_foldr1用法的测试程序
- Boost : to_string_stub用法的测试程序
- Boost::context模块fiber的无限循环测试程序