Visdom可视化学习笔记(一):通过visdom画曲线和显示图片总结

简介: 关于如何使用Visdom进行数据可视化的教程,包括画曲线、显示图片和文本等操作。

导入visdom

import visdom
viz = visdom.Visdom()

执行代码的时候还要通过终端输入python -m visdom.server

设置线性和颜色

import numpy as np
import visdom
viz=visdom.Visdom()

win = viz.line(
    X=np.column_stack((
        np.arange(0, 10),
        np.arange(0, 10),
        np.arange(0, 10),
    )),
    Y=np.column_stack((
        np.linspace(5, 10, 10),
        np.linspace(5, 10, 10) + 5,
        np.linspace(5, 10, 10) + 10,
    )),
    opts={
        'dash': np.array(['solid', 'dash', 'dashdot']),
        'linecolor': np.array([
            [0, 101, 255],
            [0, 61, 255],
            [255, 255, 0],
        ]),
        'title': 'Different line dash types'
    }
)

结果:
在这里插入图片描述

画一条折线

import visdom
viz = visdom.Visdom()
viz.line(X=[1, 2, 3, 4],  # x坐标
         Y=[1, 4, 9, 16],  # y值
        win="line1",  # 窗口id
        name="test line",  # 线条名称
        update='append',  # 以添加方式加入
        opts={
            'showlegend': True,  # 显示网格
            'title': "Demo line in Visdom",
            'xlabel': "x1",  # x轴标签
            'ylabel': "y1",  # y轴标签
        },
         )

结果
在这里插入图片描述

画两条折线

import visdom
viz = visdom.Visdom()
viz.line(X=[1, 2, 3, 4],  # x坐标
         Y=[1, 4, 9, 16],  # y值
        win="line1",  # 窗口id
        name="test line",  # 线条名称
        update='append',  # 以添加方式加入
        opts={
            'showlegend': True,  # 显示网格
            'title': "Demo line in Visdom",
            'xlabel': "x1",  # x轴标签
            'ylabel': "y1",  # y轴标签
        },
         )
viz.line(X=[1, 2, 3, 4], Y=[0.5, 2, 4.5, 8],name="test line2", win='line1', update='append')

结果
在这里插入图片描述

同时画多条曲线

import numpy as np
import visdom
viz=visdom.Visdom()
name = ['y=x^2', 'y=kx+b']
X = np.linspace(-5, 5, 100)  # (100,)
viz.line(
    Y=np.column_stack((X * X, np.sqrt(X + 5))),  # (100, 2)
    X=np.column_stack((X, X)),  # (100, 2)
    opts=dict(markers=False, legend=name),)

结果:
在这里插入图片描述

显示实时的动态曲线

import numpy as np
import visdom,time
viz=visdom.Visdom()

x, y = 0, 0

for i in np.linspace(0, 2 * np.pi, 1000):
    x = i
    y = np.sin(x)

    viz.line(X=np.array([x]), Y=np.array([y]), win='sin-realtime', update='append')
    time.sleep(0.0001)

from visdom import Visdom
import numpy as np
import torch

viz = Visdom(env='test')
#这句话就新建一个连接客户端

for i in range(0,10):
    x = torch.tensor([i])
    y = x
    viz.line(X=x, Y=y, win='polynomial', update='append' if i>0 else None)

#updateTrace新增一条线
x = torch.arange(0,9,0.1)
y = (x**2) / 9
viz.line(X=x, Y=y, win='polynomial', name='this is a new Trace',update='append')

结果:
在这里插入图片描述
在这里插入图片描述

显示图片

viz.image的功能可分为如下两类

  • image接收一个二维或三维向量,HxW或3×HxW,前者是黑白图像,后者是彩色图像。
  • images接收一个四维向量NxCxHxW,C可以是1或3,分别代表黑白和彩色图像。可实现类似torchvision中makegrid的功能,将多张图片拼接在一起。images也可以接收一个二维或三维的向量,此时它所实现的功能与image一致。
from visdom import Visdom
import numpy as np
import torch
viz = Visdom(env='test')
# 这句话就新建一个连接客户端
# 可视化一张随机的黑白图片
viz.image(torch.randn(64, 64).numpy())
# 可视化一张随机的彩色图片
viz.image(torch.randn(3, 64, 64).numpy(), win='random2')
# 可视化36张随机的彩色图片,每行6张
# viz.image(torch.randn(36,3,64,64).numpy(), nrow=6, win='random3',opts={'title':'random_imgs'})
viz.images(torch.randn(36, 3, 64, 64).numpy(), nrow=6, win='random3', opts={'title': 'random_imgs'})

结果:
在这里插入图片描述

显示文本

from visdom import Visdom
import numpy as np
import torch

viz = Visdom(env='test')
# 这句话就新建一个连接客户端
a='this is a test'
viz.text(a, win='label', opts=dict(title='batch-y'))

结果:
在这里插入图片描述

目录
相关文章
|
数据可视化
ShapeNet数据集及dataset代码分析
ShapeNet数据集及dataset代码分析
2199 0
|
机器学习/深度学习 人工智能 数据可视化
生成AI的两大范式:扩散模型与Flow Matching的理论基础与技术比较
本文系统对比了扩散模型与Flow Matching两种生成模型技术。扩散模型通过逐步添加噪声再逆转过程生成数据,类比为沙堡的侵蚀与重建;Flow Matching构建分布间连续路径的速度场,如同矢量导航系统。两者在数学原理、训练动态及应用上各有优劣:扩散模型适合复杂数据,Flow Matching采样效率更高。文章结合实例解析两者的差异与联系,并探讨其在图像、音频等领域的实际应用,为生成建模提供了全面视角。
3282 1
生成AI的两大范式:扩散模型与Flow Matching的理论基础与技术比较
|
11月前
|
Prometheus 监控 数据可视化
模型被挤了?立即查看服务器GPU/CPU占用,别再误杀他人进程!
模型在服务器上跑得好好的,突然就“卡”了甚至被挤掉?别急着抱怨!本文手把手教你如何优雅地查看共享服务器的CPU和GPU占用情况,学会做一个有素质的“共享玩家”,告别模型被挤的尴尬!文末还有硬核忠告和Linux学习建议。
1680 87
|
8月前
|
人工智能
AI推理方法演进:Chain-of-Thought、Tree-of-Thought与Graph-of-Thought技术对比分析
大语言模型推理能力不断提升,从早期的规模扩展转向方法创新。2022年Google提出Chain-of-Thought(CoT),通过展示推理过程显著提升模型表现。随后,Tree-of-Thought(ToT)和Graph-of-Thought(GoT)相继出现,推理结构由线性链条演进为树状分支,最终发展为支持多节点连接的图网络。CoT成本低但易错传,ToT支持多路径探索与回溯,GoT则实现非线性、多维推理,适合复杂任务。三者在计算成本与推理能力上形成递进关系,推动AI推理向更接近人类思维的方向发展。
624 4
|
关系型数据库 MySQL
MySQL主从异常Coordinator stopped because there were error(s) in the worker(s). The most recent failur
MySQL主从异常Coordinator stopped because there were error(s) in the worker(s). The most recent failur
5745 0
|
PyTorch 算法框架/工具
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
PyTorch中的`nn.AdaptiveAvgPool2d()`函数用于实现自适应平均池化,能够将输入特征图调整到指定的输出尺寸,而不需要手动计算池化核大小和步长。
1497 1
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
27334 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
SQL 关系型数据库 MySQL
Python系列:教你使用PyMySQL操作MySQL数据库
Python系列:教你使用PyMySQL操作MySQL数据库
1144 8
|
机器学习/深度学习
【机器学习】面试题:LSTM长短期记忆网络的理解?LSTM是怎么解决梯度消失的问题的?还有哪些其它的解决梯度消失或梯度爆炸的方法?
长短时记忆网络(LSTM)的基本概念、解决梯度消失问题的机制,以及介绍了包括梯度裁剪、改变激活函数、残差结构和Batch Normalization在内的其他方法来解决梯度消失或梯度爆炸问题。
1390 2

热门文章

最新文章