0

0

使用pyecharts做自己的visualDL

P粉084495128

P粉084495128

发布时间:2025-07-31 13:25:18

|

267人浏览过

|

来源于php中文网

原创

本文介绍用pyecharts构建类似visualDL的实时可视化工具,监控模型训练时的LOSS和ACC变化。先安装pyecharts,用paddle.vision的Cifar10数据集和mobilenet_v2模型,配置训练参数与优化器,定义折线图和仪表盘可视化函数,通过定期刷新本地HTML实现实时展示训练状态。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

使用pyecharts做自己的visualdl - php中文网

使用pyecharts做自己的visualDL

使用pyecharts,在本地训练的时候,可以实时刷新训练中的LOSS和ACC变化,做一个自己的visualDL

1. pyecharts引入

 概况

  • Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

 特性

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

参考:https://pyecharts.org/#/zh-cn/intro

In [1]
# 安装pyecharts! pip install -q pyecharts
   

*注

为了减小体积,新版的pyecharts已经不带地图包了,如果有地图服务需求的需要单独安装地图包

# 持久化安装地图包# ! mkdir /home/aistudio/maps# ! pip install echarts-countries-pypkg -t /home/aistudio/maps# ! pip install echarts-china-provinces-pypkg -t /home/aistudio/maps# ! pip install echarts-china-cities-pypkg -t /home/aistudio/maps# ! pip install echarts-china-counties-pypkg -t /home/aistudio/maps# ! pip install echarts-china-misc-pypkg -t /home/aistudio/maps# ! pip install echarts-cities-pypkg -t /home/aistudio/maps# import sys # sys.path.append('/home/aistudio/maps')
   

2. 模型训练准备

主要使用paddle.vision里面的分类模型和数据

In [2]
import numpy as npimport paddlefrom paddle.vision.datasets import Cifar10import paddle.vision.transforms as Tfrom paddle.io import DataLoaderfrom paddle.nn.functional import cross_entropyfrom paddle.metric import accuracyfrom paddle.vision.models import mobilenet_v2from paddle.optimizer import Adam
   

2.1 配置训练参数

数据集的图像较小,在32G的GPU环境下,可以使用大的batch_size。这里我们训练10轮,每轮都评估一次

In [3]
# 配置batch_size = 2048learning_rate = 2e-6epoch_num = 10eval_epoch = 1  # 多少轮评估一次
   

2.2 准备数据、模型以及优化器

  • 数据集为paddle.vision.datasets带的cifar10数据集

该数据集共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图。这里面有50000张用于训练,构成了5个训练批,每一批10000张图;另外10000用于测试,单独构成一批。测试批的数据里,取自10类中的每一类,每一类随机取1000张。抽剩下的就随机排列组成了训练批。注意一个训练批中的各类图像并不一定数量相同,总的来看训练批,每一类都有5000张图

  • 模型使用paddle.vision.models带的mobilenet_v2模型

MobileNetV2 基于 MobileNetV1的基本概念构建,并使用在深度上可分离的卷积作为高效的构建块。此外,MobileNetV2 引入了两种新的架构特性:1)层之间的线性瓶颈层;2)瓶颈层之间的连接捷径

  • 优化器使用Adam优化器

Adam是一种自适应优化器,结合AdaGrad和RMSProp两种优化算法的优点。对梯度的一阶矩估计(梯度的均值)和二阶矩估计(梯度的未中心化的方差)进行综合考虑,计算出更新步长

Glimmer Ai
Glimmer Ai

基于GPT-3和DALL·E2的PPT制作工具

下载
In [4]
# 数据normalize = T.ToTensor()  # 据大佬发现,totensor带有简单的normalize的功能train_data = Cifar10(mode='train', transform=normalize)
eval_data = Cifar10(mode='test', transform=normalize)
train_reader = DataLoader(train_data, batch_size=batch_size, shuffle=True, drop_last=True)
eval_reader = DataLoader(eval_data, batch_size=batch_size, shuffle=True, drop_last=True)# 模型model = mobilenet_v2(pretrained=True, num_classes=10)# 优化器opt = Adam(learning_rate=learning_rate, parameters=model.parameters())
       
Cache file /home/aistudio/.cache/paddle/dataset/cifar/cifar-10-python.tar.gz not found, downloading https://dataset.bj.bcebos.com/cifar/cifar-10-python.tar.gz 
Begin to download

Download finished
100%|██████████| 20795/20795 [00:00<00:00, 56851.54it/s]
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py:1263: UserWarning: Skip loading for classifier.1.weight. classifier.1.weight receives a shape [1280, 1000], but the expected shape is [1280, 10].
  warnings.warn(("Skip loading for {}. ".format(key) + str(err)))
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py:1263: UserWarning: Skip loading for classifier.1.bias. classifier.1.bias receives a shape [1000], but the expected shape is [10].
  warnings.warn(("Skip loading for {}. ".format(key) + str(err)))
       

3. 可视化准备

具体pyecharts的使用可以参考官方文档,这里使用了折线图表示训练时的LOSS和ACC,用仪表盘表示评估的ACC

使用pyecharts做自己的visualDL - php中文网        

使用pyecharts做自己的visualDL - php中文网        

In [5]
from pyecharts import options as optsfrom pyecharts.charts import Line, Gauge  # 折线图和仪表图
   

3.1 可视化函数定义

将画图封装为函数

In [6]
# 训练Loss和Accdef show_train_laa(iters, loss, acc):
    c = (
        Line(init_opts=opts.InitOpts(width="512px", height="512px"))
        .add_xaxis(xaxis_data=list(range(iters)))
        .add_yaxis(
            series_name="TRAIN_LOSS",
            y_axis=list(loss),
            label_opts=opts.LabelOpts(is_show=False),
            yaxis_index=0,
            color="#d14a61"
        )
        .add_yaxis(
            series_name="TRAIN_ACC",
            y_axis=list(acc),
            label_opts=opts.LabelOpts(is_show=False),
            yaxis_index=1,
            color="#000000"
        )
        .extend_axis(
            yaxis=opts.AxisOpts(
                name="ACC",
                type_="value",
                position="right",
                axisline_opts=opts.AxisLineOpts(
                    linestyle_opts=opts.LineStyleOpts(color="#d14a61")
                ),
            )
        )
        .extend_axis(
            yaxis=opts.AxisOpts(
                name="LOSS",
                type_="value",
                position="left",
                axisline_opts=opts.AxisLineOpts(
                    linestyle_opts=opts.LineStyleOpts(color="#000000")
                ),
            )
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="TRAIN_STATE"),
            tooltip_opts=opts.TooltipOpts(trigger="axis"),
            xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
        )
    )    return c# 评估Accdef show_eval_acc(eval_acc):
    c = (
        Gauge(init_opts=opts.InitOpts(width="512px", height="512px"))
        .add("", [("", (100 * eval_acc))])
        .set_global_opts(title_opts=opts.TitleOpts(title="EVAL_ACC"))
    )    return c
   

3.2 效果测试

使用虚构的数据进行测试显示,这里需要自己运行之后才能看到。还能交互哦~

In [7]
iters = 9loss = [45, 14, 7.2, 5.4, 2.2, 1, 0.99, 0.95, 0.75]
acc = [0.2, 0.41, 0.61, 0.66, 0.57, 0.68, 0.69, 0.71, 0.55]
show_train_laa(iters, loss, acc).render_notebook()  # 需要自己运行才能看到
       
<pyecharts.render.display.HTML at 0x7fb4c464e250>
               
In [8]
eval_acc = 0.782show_eval_acc(eval_acc).render_notebook()  # render_notebook可以在notebook环境显示
       
<pyecharts.render.display.HTML at 0x7fb4dcf69490>
               

3.3 刷新html

在notebook环境好像不能实时刷新显示,于是只能在本地每次保存新的html,然后每隔一段时间刷新html,以达到实时显示的效果

In [9]
# 刷新htmldef f5_html(html_path):
    with open(html_path, 'a+') as f:
        refesh = '<meta http-equiv="Refresh" content="3";/>'  # 每3秒钟刷新一次
        f.write(refesh)
   

4. 模型训练

简单训练模型,没有调整训练参数,主要是为了查看训练过程

In [ ]
losses = []
acces = []for e in range(epoch_num):    for i, (image, label) in enumerate(train_reader()):
        out = model(image)
        loss = cross_entropy(out, label)
        avg_loss = paddle.mean(loss)
        lab = paddle.reshape(label, (-1, 1))  # accuracy需要label是[*, 1]大小的
        acc = accuracy(out, lab)
        avg_loss.backward()
        opt.minimize(avg_loss)
        model.clear_gradients()
        losses.append(float(loss.numpy()[0]))
        acces.append(float(acc.numpy()[0]))
        show_train_laa(len(losses), losses, acces).render('train.html')  # 存入html
        f5_html('train.html')  # 刷新html
        # print("[train] Epoch {} batch {}: loss = {} acc = {}".format(e, i, np.mean(loss.numpy()), acc.numpy()[0]))
        if e % eval_epoch == 0 and i == ((50000 // batch_size) - 1):
            eval_accs = []            for ee, (eimage, elabel) in enumerate(eval_reader()):
                eout = model(eimage)
                elab = paddle.reshape(elabel, (-1, 1))
                eacc = accuracy(eout, elab).numpy()[0]
                eval_accs.append(float(eacc))                # print("[Eval] batch {}: acc = {}".format(ee, eacc))
            eval_acc = np.mean(eval_accs)
            show_eval_acc(eval_acc).render('eval.html')
            f5_html('eval.html')
   

5. 本地结果

因为在notebook中不知道如何实时刷新数据,所以在本地3秒刷新一次html,实时显示训练过程(gif加速1000倍)

使用pyecharts做自己的visualDL - php中文网        

为了在1M一下,有点花,截图如下

使用pyecharts做自己的visualDL - php中文网        

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

504

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

292

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

759

2023.10.16

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

534

2024.03.13

Python 数据分析处理
Python 数据分析处理

本专题聚焦 Python 在数据分析领域的应用,系统讲解 Pandas、NumPy 的数据清洗、处理、分析与统计方法,并结合数据可视化、销售分析、科研数据处理等实战案例,帮助学员掌握使用 Python 高效进行数据分析与决策支持的核心技能。

82

2025.09.08

Python 数据分析与可视化
Python 数据分析与可视化

本专题聚焦 Python 在数据分析与可视化领域的核心应用,系统讲解数据清洗、数据统计、Pandas 数据操作、NumPy 数组处理、Matplotlib 与 Seaborn 可视化技巧等内容。通过实战案例(如销售数据分析、用户行为可视化、趋势图与热力图绘制),帮助学习者掌握 从原始数据到可视化报告的完整分析能力。

60

2025.10.14

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

37

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

136

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

47

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号