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的案例相关推荐

  1. Py之wordcloud:python中非常有趣的词云图wordcloud简介、安装、使用方法、案例应用详细攻略

    Py之wordcloud:python中非常有趣的词云图wordcloud简介.安装.使用方法.案例应用详细攻略 目录 wordcloud简介 wordcloud安装 wordcloud使用方法 案例 ...

  2. ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略

    ML之XGBoost:XGBoost算法模型(相关配图)的简介.关键思路.代码实现(目标函数/评价函数).安装.使用方法.案例应用之详细攻略 目录 XGBoost算法模型(相关配图)的简介 1.XGB ...

  3. 可视化篇(五)——— python绘制热力图及案例

    可视化篇(五)--- python绘制热力图及案例 摘要 效果图 python代码 摘要 本文演示了如何通过python绘制热力图,并给出了其应用于展示数据之间相关性的案例供读者参考. 效果图 pyt ...

  4. linux安装oracle 操作系统内核参数 aio,Oracle Study之案例--安装Oracle内核参数配置

    Oracle Study之案例--安装Oracle内核参数配置 在Linux系统下,安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其中最主要的是和内 ...

  5. linux vps 可视化监控,CentOS 7安装Grafana 4及结合Zabbix3.2实现可视化监控图形

    已经介绍了如何在CentOS 7环境下安装Zabbix监控,本章继续介绍在CentOS 7环境下安装Grafana,并结合Zabbix实现可视化监控图形! 简介: Grafana 是 Graphite ...

  6. python数据可视化的包怎么安装_数据可视化包 - matplotlib

    Matplotlib 1,Matplotlib - 介绍 Matplotlib是一个强大的Python绘图和数据可视化的工具包. # 安装方法 pip install matplotlib # 引用方 ...

  7. k8s可视化管理工具Rancher安装和使用

    k8s系列入门级教程-k8s可视化管理工具Rancher安装和使用 <超低成本的k8s集群搭建教程> 使用rke安装企业级k8s集群-待填坑 prometheus+grafana监控搭建教 ...

  8. VB.net:VB.net编程语言学习之添加引用打包安装项目的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之添加引用&打包安装项目的简介.案例应用之详细攻略 目录 关于添加引用 1.SW的二次开发,需要引用多个Solidworks库文件即dll文件

  9. Py之transformers:transformers的简介、安装、使用方法、案例应用之详细攻略

    Py之transformers:transformers的简介.安装.使用方法.案例应用之详细攻略 目录 transformers的简介 1.为什么要使用transformers? 2.文档.任务总结 ...

最新文章

  1. 【AI参赛经验】汉字书法识别比赛经验心得——by:microfat_htu
  2. python代码使用正则化模块re检查字符串是否只含有要求指定的字符
  3. 史上最全!27种神经网络简明图解:模型那么多,我该怎么选?
  4. C#中保存Gif文件设置透明无效果
  5. SPFILE 、PFILE 的全面解读
  6. nacos 适配达梦、人大金仓数据库
  7. java中的异常处理语句_Java中实现异常处理的基础知识
  8. Laravel配置自带组件实现各类型邮件发送功能的代码实例
  9. fastdfs原理_搭建分布式文件系统FastDFS集群
  10. java+mysql+学生课程管理系统的实现
  11. 海康摄像头不记得登陆密码了怎么办?2020年联系人工客服最新版解答方案
  12. 卫星电话是直接与卫星通信还是通过地面站?
  13. openrefine的 General Refine Expression Language(GREL)
  14. ABBYY软件的OCR文字识别工具有什么用
  15. c语言快速拼接字符串,C语言拼接字符串
  16. Harbor启动访问502错误
  17. JS获取手机型号和系统类型
  18. matlab colarbar设置,matlab color bar 如何改变色调
  19. css实现tab切换时下划线动画效果
  20. OpenGL ES 实现瘦身大长腿效果

热门文章

  1. python有框架吗_Python几种主流框架
  2. Python中的time、datetime、calendar模块(时间模块)
  3. Pandas的学习(4.DataFrame之间的运算以及DataFrame和Series之间的运算)
  4. VTK:正态估计用法实战
  5. VTK:vtkCursor2D用法实战
  6. boost::sort模块实现spreadsort 反向字符串排序示例
  7. boost::hana::count_if用法的测试程序
  8. boost::hana::detail::type_foldr1用法的测试程序
  9. Boost : to_string_stub用法的测试程序
  10. Boost::context模块fiber的无限循环测试程序