diff --git a/doc/fluid/advanced_guide/evaluation_debugging/debug/visualdl.md b/doc/fluid/advanced_guide/evaluation_debugging/debug/visualdl.md
index 77d1756eafe1a55e8b470543398a02e05fc0b109..df0149674045239242735bad0c778d74f9d17811 100644
--- a/doc/fluid/advanced_guide/evaluation_debugging/debug/visualdl.md
+++ b/doc/fluid/advanced_guide/evaluation_debugging/debug/visualdl.md
@@ -1,4 +1,3 @@
-
# VisualDL 工具简介
@@ -8,14 +7,26 @@
-VisualDL是深度学习模型可视化分析工具,以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、高维数据分布等。可帮助用户更清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型优化。
+VisualDL是飞桨可视化分析工具,以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、直方图、PR曲线及高维数据分布。可帮助用户更清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型优化。
+
+具体功能使用方式请参见**VisualDL使用指南**。项目正处于高速迭代中,敬请期待新组件的加入。
-VisualDL提供丰富的可视化功能,支持实时训练参数分析、图结构、数据样本可视化及高维数据降维呈现等诸多功能。具体功能使用方式,请参见 **VisualDL 使用指南**。项目正处于高速迭代中,敬请期待新组件的加入。
+VisualDL支持浏览器种类:Chrome(81和83)、Safari 13、FireFox(77和78)、Edge(Chromium版)。
VisualDL原生支持python的使用, 通过在模型的Python配置中添加几行代码,便可为训练过程提供丰富的可视化支持。
+## 目录
+
+* [核心亮点](#核心亮点)
+* [安装方式](#安装方式)
+* [使用方式](#使用方式)
+* [可视化功能概览](#可视化功能概览)
+* [开源贡献](#开源贡献)
+* [更多细节](#更多细节)
+* [技术交流](#技术交流)
+
## 核心亮点
@@ -26,7 +37,7 @@ API设计简洁易懂,使用简单。模型结构一键实现可视化。
### 功能丰富
-功能覆盖训练参数、图结构、数据样本及数据降维可视化。
+功能覆盖标量、数据样本、图结构、直方图、PR曲线及数据降维可视化。
### 高兼容性
@@ -40,13 +51,23 @@ API设计简洁易懂,使用简单。模型结构一键实现可视化。
## 安装方式
-使用pip安装 VisualDL 运行范例:
+### 使用pip安装
```shell
-pip install --upgrade visualdl==2.0.0a2
+pip install --upgrade --pre visualdl
```
+### 使用代码安装
+```
+git clone https://github.com/PaddlePaddle/VisualDL.git
+cd VisualDL
+
+python setup.py bdist_wheel
+pip install --upgrade dist/visualdl-*.whl
+```
+
+需要注意,官方自2020年1月1日起不再维护Python2,为了保障代码可用性,VisualDL现仅支持Python3
## 使用方式
@@ -57,15 +78,13 @@ VisualDL将训练过程中的数据、参数等信息储存至日志文件中后
VisualDL的后端提供了Python SDK,可通过LogWriter定制一个日志记录器,接口如下:
```python
-class LogWriter(
- logdir=None,
+class LogWriter(logdir=None,
comment='',
max_queue=10,
flush_secs=120,
filename_suffix='',
write_to_disk=True,
- **kwargs
- )
+ **kwargs)
```
#### 接口参数
@@ -103,16 +122,21 @@ with LogWriter(logdir="./log/scalar_test/train") as writer:
使用命令行启动VisualDL面板,命令格式如下:
```python
-visualdl --logdir --host --port
+visualdl --logdir --host --port --cache-timeout --language --public-path --api-only
```
参数详情:
-| 参数 | 意义 |
-| -------- | ------------------------------------------------------------ |
-| --logdir | 设定日志所在目录,可以指定多个目录,VisualDL将遍历并且迭代寻找指定目录的子目录,将所有实验结果进行可视化 |
-| --host | 设定IP,默认为`127.0.0.1` |
-| --port | 设定端口,默认为`8040` |
+| 参数 | 意义 |
+| --------------- | ------------------------------------------------------------ |
+| --logdir | 设定日志所在目录,可以指定多个目录,VisualDL将遍历并且迭代寻找指定目录的子目录,将所有实验结果进行可视化 |
+| --model | 设定模型文件路径(非文件夹路径),VisualDL将在此路径指定的模型文件进行可视化,目前可支持PaddlePaddle、ONNX、Keras、Core ML、Caffe等多种模型结构,详情可查看[graph支持模型种类]([https://github.com/PaddlePaddle/VisualDL/blob/develop/docs/components/README.md#Graph--%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E7%BB%84%E4%BB%B6](https://github.com/PaddlePaddle/VisualDL/blob/develop/docs/components/README.md#Graph--网络结构组件)) |
+| --host | 设定IP,默认为`127.0.0.1` |
+| --port | 设定端口,默认为`8040` |
+| --cache-timeout | 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒 |
+| --language | VisualDL面板语言,可指定为'EN'或'ZH',默认为浏览器使用语言 |
+| --public-path | VisualDL面板URL路径,默认是'/app',即访问地址为'http://<host>:<port>/app' |
+| --api-only | 是否只提供API,如果设置此参数,则VisualDL不提供页面展示,只提供API服务,此时API地址为'http://<host>:<port>/<public_path>/api';若没有设置public_path参数,则默认为'http://<host>:<port>/api' |
针对上一步生成的日志,启动命令为:
@@ -130,19 +154,26 @@ visualdl.server.app.run(logdir,
port=8080,
cache_timeout=20,
language=None,
+ public_path=None,
+ api_only=False,
open_browser=False)
```
-接口参数:
+请注意:除`logdir`外,其他参数均为不定参数,传递时请指明参数名。
+
+接口参数具体如下:
| 参数 | 格式 | 含义 |
| ------------- | ------------------------------------------------ | ------------------------------------------------------------ |
| logdir | string或list[string_1, string_2, ... , string_n] | 日志文件所在的路径,VisualDL将在此路径下递归搜索日志文件并进行可视化,可指定单个或多个路径 |
+| model | string | 模型文件路径(非文件夹路径),VisualDL将在此路径指定的模型文件进行可视化 |
| host | string | 指定启动服务的ip,默认为`127.0.0.1` |
| port | int | 启动服务端口,默认为`8040` |
| cache_timeout | int | 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒 |
-| language | string | VisualDL面板语言,可指定为'EN'或'CN',默认自动匹配操作系统使用语言 |
-| open_browser | boolean | 是否打开浏览器,设置为True则在启动后自动打开浏览器并访问VisualDL面板 |
+| language | string | VisualDL面板语言,可指定为'en'或'zh',默认为浏览器使用语言 |
+| public_path | string | VisualDL面板URL路径,默认是'/app',即访问地址为'http://:/app' |
+| api_only | boolean | 是否只提供API,如果设置此参数,则VisualDL不提供页面展示,只提供API服务,此时API地址为'http://://api';若没有设置public_path参数,则默认为http://:/api' |
+| open_browser | boolean | 是否打开浏览器,设置为True则在启动后自动打开浏览器并访问VisualDL面板,若设置api_only,则忽略此参数 |
针对上一步生成的日志,我们的启动脚本为:
@@ -155,7 +186,7 @@ app.run(logdir="./log")
在使用任意一种方式启动VisualDL面板后,打开浏览器访问VisualDL面板,即可查看日志的可视化结果,如图:
-
+
@@ -163,27 +194,31 @@ app.run(logdir="./log")
## 可视化功能概览
### Scalar
+
以图表形式实时展示训练过程参数,如loss、accuracy。让用户通过观察单组或多组训练参数变化,了解训练过程,加速模型调优。具有两大特点:
#### 动态展示
-在启动VisualDL Board后,LogReader将不断增量的读取日志中数据并供前端调用展示,因此能够在训练中同步观测指标变化,如下图:
+在启动VisualDL后,LogReader将不断增量的读取日志中数据并供前端调用展示,因此能够在训练中同步观测指标变化,如下图:
+
#### 多实验对比
-只需在启动VisualDL Board的时将每个实验日志所在路径同时传入即可,每个实验中相同tag的指标将绘制在一张图中同步呈现,如下图:
+只需在启动VisualDL时将每个实验日志所在路径同时传入即可,每个实验中相同tag的指标将绘制在一张图中同步呈现,如下图:
+
### Image
+
实时展示训练过程中的图像数据,用于观察不同训练阶段的图像变化,进而深入了解训练过程及效果。
@@ -191,6 +226,56 @@ app.run(logdir="./log")
+
+### Audio
+
+实时查看训练过程中的音频数据,监控语音识别与合成等任务的训练过程。
+
+
+
+
+
+
+
+### Graph
+
+一键可视化模型的网络结构。可查看模型属性、节点信息、节点输入输出等,并支持节点搜索,辅助用户快速分析模型结构与了解数据流向。
+
+
+
+
+
+
+
+### Histogram
+
+以直方图形式展示Tensor(weight、bias、gradient等)数据在训练过程中的变化趋势。深入了解模型各层效果,帮助开发者精准调整模型结构。
+
+- Offset模式
+
+
+
+
+
+
+
+- Overlay模式
+
+
+
+
+
+
+
+### PR Curve
+
+精度-召回率曲线,帮助开发者权衡模型精度和召回率之间的平衡,设定最佳阈值。
+
+
+
+
+
+
### High Dimensional
将高维数据进行降维展示,目前支持T-SNE、PCA两种降维方式,用于深入分析高维数据间的关系,方便用户根据数据特征进行算法优化。
@@ -201,9 +286,15 @@ app.run(logdir="./log")
## 开源贡献
-VisualDL 是由 [PaddlePaddle](http://www.paddlepaddle.org/) 和 [ECharts](http://echarts.baidu.com/) 合作推出的开源项目。欢迎所有人使用,提意见以及贡献代码。
+VisualDL 是由 [PaddlePaddle](https://www.paddlepaddle.org/) 和 [ECharts](https://echarts.apache.org/) 合作推出的开源项目。
+Graph 相关功能由 [Netron](https://github.com/lutzroeder/netron) 提供技术支持。
+欢迎所有人使用,提意见以及贡献代码。
## 更多细节
-想了解更多关于VisualDL可视化功能的使用详情介绍,请查看**Visual DL 使用指南**。
+想了解更多关于VisualDL可视化功能的使用详情介绍,请查看**VisualDL使用指南**。
+
+## 技术交流
+
+欢迎您加入VisualDL官方QQ群:1045783368 与飞桨团队以及其他用户共同针对VisualDL进行讨论与交流。
diff --git a/doc/fluid/advanced_guide/evaluation_debugging/debug/visualdl_usage.md b/doc/fluid/advanced_guide/evaluation_debugging/debug/visualdl_usage.md
index f191aa8cef12caf67d2e42666683fb2155aae437..e6a6445e3d4a89501f236bba6cf5623304ab3024 100644
--- a/doc/fluid/advanced_guide/evaluation_debugging/debug/visualdl_usage.md
+++ b/doc/fluid/advanced_guide/evaluation_debugging/debug/visualdl_usage.md
@@ -1,20 +1,20 @@
-
-
# VisualDL 使用指南
### 概述
VisualDL 是一个面向深度学习任务设计的可视化工具。VisualDL 利用了丰富的图表来展示数据,用户可以更直观、清晰地查看数据的特征与变化趋势,有助于分析数据、及时发现错误,进而改进神经网络模型的设计。
-目前,VisualDL 支持 scalar, image, high dimensional 三个组件,项目正处于高速迭代中,敬请期待新组件的加入。
-
-| 组件名称 | 展示图表 | 作用 |
-| :----------------------------------------------------------: | :--------: | :----------------------------------------------------------- |
-| [ Scalar](#Scalar -- 折线图组件) | 折线图 | 动态展示损失函数值、准确率等标量数据 |
-| [Image](#Image -- 图片可视化组件) | 图片可视化 | 显示图片,可显示输入图片和处理后的结果,便于查看中间过程的变化 |
-| [High Dimensional](#High Dimensional -- 数据降维组件) | 数据降维 | 将高维数据映射到 2D/3D 空间来可视化嵌入,便于观察不同数据的相关性 |
-
+目前,VisualDL 支持 scalar, image, audio, graph, histogram, pr curve, high dimensional 七个组件,项目正处于高速迭代中,敬请期待新组件的加入。
+| 组件名称 | 展示图表 | 作用 |
+| :-------------------------------------------------: | :--------: | :----------------------------------------------------------- |
+| [ Scalar](#Scalar--标量组件) | 折线图 | 动态展示损失函数值、准确率等标量数据 |
+| [Image](#Image--图片可视化组件) | 图片可视化 | 显示图片,可显示输入图片和处理后的结果,便于查看中间过程的变化 |
+| [Audio](#Audio--音频播放组件) | 音频播放 | 播放训练过程中的音频数据,监控语音识别与合成等任务的训练过程 |
+| [Graph](#Graph--网络结构组件) | 网络结构 | 展示网络结构、节点属性及数据流向,辅助学习、优化网络结构 |
+| [Histogram](#Histogram--直方图组件) | 直方图 | 展示训练过程中权重、梯度等张量的分布 |
+| [PR Curve](#PR-Curve--PR曲线组件) | 折线图 | 权衡精度与召回率之间的平衡关系,便于选择最佳阈值 |
+| [High Dimensional](#High-Dimensional--数据降维组件) | 数据降维 | 将高维数据映射到 2D/3D 空间来可视化嵌入,便于观察不同数据的相关性 |
## Scalar -- 折线图组件
@@ -29,16 +29,22 @@ Scalar 组件的记录接口如下:
```python
add_scalar(tag, value, step, walltime=None)
```
+
接口参数说明如下:
-|参数|格式|含义|
-|-|-|-|
-|tag|string|记录指标的标志,如`train/loss`,不能含有`%`|
-|value|float|要记录的数据值|
-|step|int|记录的步数|
-|walltime|int|记录数据的时间戳,默认为当前时间戳|
+
+| 参数 | 格式 | 含义 |
+| -------- | ------ | ------------------------------------------- |
+| tag | string | 记录指标的标志,如`train/loss`,不能含有`%` |
+| value | float | 要记录的数据值 |
+| step | int | 记录的步数 |
+| walltime | int | 记录数据的时间戳,默认为当前时间戳 |
### Demo
-下面展示了使用 Scalar 组件记录数据的示例,代码见[Scalar组件](../../demo/components/scalar_test.py)
+
+- 基础使用
+
+下面展示了使用 Scalar 组件记录数据的示例,代码文件请见[Scalar组件](https://github.com/PaddlePaddle/VisualDL/blob/develop/demo/components/scalar_test.py)
+
```python
from visualdl import LogWriter
@@ -52,7 +58,9 @@ if __name__ == '__main__':
# 向记录器添加一个tag为`loss`的数据
writer.add_scalar(tag="loss", step=step, value=1/(value[step] + 1))
```
+
运行上述程序后,在命令行执行
+
```shell
visualdl --logdir ./log --port 8080
```
@@ -60,11 +68,58 @@ visualdl --logdir ./log --port 8080
接着在浏览器打开`http://127.0.0.1:8080`,即可查看以下折线图。
-
+
+- 多组实验对比
+
+下面展示了使用Scalar组件实现多组实验对比
+
+多组实验对比的实现分为两步:
+
+1. 创建子日志文件储存每组实验的参数数据
+2. 将数据写入scalar组件时,**使用相同的tag**,即可实现对比**不同实验**的**同一类型参数**
+
+```python
+from visualdl import LogWriter
+
+if __name__ == '__main__':
+ value = [i/1000.0 for i in range(1000)]
+ # 步骤一:创建父文件夹:log与子文件夹:scalar_test
+ with LogWriter(logdir="./log/scalar_test") as writer:
+ for step in range(1000):
+ # 步骤二:向记录器添加一个tag为`train/acc`的数据
+ writer.add_scalar(tag="train/acc", step=step, value=value[step])
+ # 步骤二:向记录器添加一个tag为`train/loss`的数据
+ writer.add_scalar(tag="train/loss", step=step, value=1/(value[step] + 1))
+ # 步骤一:创建第二个子文件夹scalar_test2
+ value = [i/500.0 for i in range(1000)]
+ with LogWriter(logdir="./log/scalar_test2") as writer:
+ for step in range(1000):
+ # 步骤二:在同样名为`train/acc`下添加scalar_test2的accuracy的数据
+ writer.add_scalar(tag="train/acc", step=step, value=value[step])
+ # 步骤二:在同样名为`train/loss`下添加scalar_test2的loss的数据
+ writer.add_scalar(tag="train/loss", step=step, value=1/(value[step] + 1))
+```
+
+运行上述程序后,在命令行执行
+
+```shell
+visualdl --logdir ./log --port 8080
+```
+
+接着在浏览器打开`http://127.0.0.1:8080`,即可查看以下折线图,对比「scalar_test」和「scalar_test2」的Accuracy和Loss。
+
+
+
+
+
+
+*多组实验对比的应用案例可参考AI Studio项目:[VisualDL 2.0--眼疾识别训练可视化](https://aistudio.baidu.com/aistudio/projectdetail/502834)
+
+
### 功能操作说明
* 支持数据卡片「最大化」、「还原」、「坐标系转化」(y轴对数坐标)、「下载」折线图
@@ -75,6 +130,8 @@ visualdl --logdir ./log --port 8080
+
+
* 数据点Hover展示详细信息
@@ -83,6 +140,8 @@ visualdl --logdir ./log --port 8080
+
+
* 可搜索卡片标签,展示目标图像
@@ -91,6 +150,8 @@ visualdl --logdir ./log --port 8080
+
+
* 可搜索打点数据标签,展示特定数据
@@ -98,6 +159,8 @@ visualdl --logdir ./log --port 8080
+
+
* X轴有三种衡量尺度
1. Step:迭代次数
@@ -107,6 +170,8 @@ visualdl --logdir ./log --port 8080
+
+
* 可调整曲线平滑度,以便更好的展现参数整体的变化趋势
@@ -114,6 +179,8 @@ visualdl --logdir ./log --port 8080
+
+
## Image -- 图片可视化组件
### 介绍
@@ -127,16 +194,20 @@ Image 组件的记录接口如下:
```python
add_image(tag, img, step, walltime=None)
```
+
接口参数说明如下:
-|参数|格式|含义|
-|-|-|-|
-|tag|string|记录指标的标志,如`train/loss`,不能含有`%`|
-|img|numpy.ndarray|以ndarray格式表示的图片|
-|step|int|记录的步数|
-|walltime|int|记录数据的时间戳,默认为当前时间戳|
+
+| 参数 | 格式 | 含义 |
+| -------- | ------------- | ------------------------------------------- |
+| tag | string | 记录指标的标志,如`train/loss`,不能含有`%` |
+| img | numpy.ndarray | 以ndarray格式表示的图片 |
+| step | int | 记录的步数 |
+| walltime | int | 记录数据的时间戳,默认为当前时间戳 |
### Demo
-下面展示了使用 Image 组件记录数据的示例,代码文件请见[Image组件](../../demo/components/image_test.py)
+
+下面展示了使用 Image 组件记录数据的示例,代码文件请见[Image组件](https://github.com/PaddlePaddle/VisualDL/blob/develop/demo/components/image_test.py)
+
```python
import numpy as np
from PIL import Image
@@ -159,11 +230,13 @@ if __name__ == '__main__':
with LogWriter(logdir="./log/image_test/train") as writer:
for step in range(6):
# 添加一个图片数据
- writer.add_image(tag="doge",
+ writer.add_image(tag="eye",
img=random_crop("../../docs/images/eye.jpg"),
step=step)
```
+
运行上述程序后,在命令行执行
+
```shell
visualdl --logdir ./log --port 8080
```
@@ -171,10 +244,12 @@ visualdl --logdir ./log --port 8080
在浏览器输入`http://127.0.0.1:8080`,即可查看图片数据。
-
+
+
+
### 功能操作说明
可搜索图片标签显示对应图片数据
@@ -184,6 +259,8 @@ visualdl --logdir ./log --port 8080
+
+
支持滑动Step/迭代次数查看不同迭代次数下的图片数据
@@ -191,6 +268,442 @@ visualdl --logdir ./log --port 8080
+
+
+## Audio--音频播放组件
+
+### 介绍
+
+Audio组件实时查看训练过程中的音频数据,监控语音识别与合成等任务的训练过程。
+
+### 记录接口
+
+Audio 组件的记录接口如下:
+
+```python
+add_audio(tag, audio_array, step, sample_rate)
+```
+
+接口参数说明如下:
+
+| 参数 | 格式 | 含义 |
+| ----------- | ------------- | ------------------------------------------ |
+| tag | string | 记录指标的标志,如`audio_tag`,不能含有`%` |
+| audio_arry | numpy.ndarray | 以ndarray格式表示的音频 |
+| step | int | 记录的步数 |
+| sample_rate | int | 采样率,**注意正确填写对应音频的原采样率** |
+
+### Demo
+
+下面展示了使用 Audio 组件记录数据的示例,代码文件请见[Audio组件](https://github.com/PaddlePaddle/VisualDL/blob/develop/demo/components/audio_test.py)
+
+```python
+from visualdl import LogWriter
+import numpy as np
+import wave
+
+
+def read_audio_data(audio_path):
+ """
+ Get audio data.
+ """
+ CHUNK = 4096
+ f = wave.open(audio_path, "rb")
+ wavdata = []
+ chunk = f.readframes(CHUNK)
+ while chunk:
+ data = np.frombuffer(chunk, dtype='uint8')
+ wavdata.extend(data)
+ chunk = f.readframes(CHUNK)
+ # 8k sample rate, 16bit frame, 1 channel
+ shape = [8000, 2, 1]
+ return shape, wavdata
+
+
+if __name__ == '__main__':
+ with LogWriter(logdir="./log") as writer:
+ audio_shape, audio_data = read_audio_data("./testing.wav")
+ audio_data = np.array(audio_data)
+ writer.add_audio(tag="audio_tag",
+ audio_array=audio_data,
+ step=0,
+ sample_rate=8000)
+```
+
+运行上述程序后,在命令行执行
+
+```shell
+visualdl --logdir ./log --port 8080
+```
+
+在浏览器输入`http://127.0.0.1:8080`,即可查看音频数据。
+
+
+
+
+
+
+
+### 功能操作说明
+
+- 可搜索音频标签显示对应音频数据
+
+
+
+
+
+
+
+- 支持滑动Step/迭代次数试听不同迭代次数下的音频数据
+
+
+
+
+
+
+
+- 支持播放/暂停音频数据
+
+
+
+
+
+
+
+- 支持音量调节
+
+
+
+
+
+
+
+- 支持音频下载
+
+
+
+
+
+
+
+
+## Graph--网络结构组件
+
+### 介绍
+
+Graph组件一键可视化模型的网络结构。用于查看模型属性、节点信息、节点输入输出等,并进行节点搜索,协助开发者们快速分析模型结构与了解数据流向。
+
+### Demo
+
+共有两种启动方式:
+
+- 前端模型文件拖拽上传:
+
+ - 如只需使用Graph组件,则无需添加任何参数,在命令行执行`visualdl`后即可启动面板进行上传。
+ - 如果同时需使用其他功能,在命令行指定日志文件路径(以`./log`为例)即可启动面板进行上传:
+
+ ```shell
+ visualdl --logdir ./log --port 8080
+ ```
+
+
+
+
+
+
+
+- 后端启动Graph:
+
+ - 在命令行加入参数`--model`并指定**模型文件**路径(非文件夹路径),即可启动并查看网络结构可视化:
+
+ ```shell
+ visualdl --model ./log/model --port 8080
+ ```
+
+
+
+
+
+
+
+### 功能操作说明
+
+- 一键上传模型
+ - 支持模型格式:PaddlePaddle、ONNX、Keras、Core ML、Caffe、Caffe2、Darknet、MXNet、ncnn、TensorFlow Lite
+ - 实验性支持模型格式:TorchScript、PyTorch、Torch、 ArmNN、BigDL、Chainer、CNTK、Deeplearning4j、MediaPipe、ML.NET、MNN、OpenVINO、Scikit-learn、Tengine、TensorFlow.js、TensorFlow
+
+
+
+
+
+
+
+- 支持上下左右任意拖拽模型、放大和缩小模型
+
+
+
+
+
+
+
+- 搜索定位到对应节点
+
+
+
+
+
+
+
+- 点击查看模型属性
+
+
+
+
+
+
+
+
+
+
+
+
+
+- 支持选择模型展示的信息
+
+
+
+
+
+
+
+- 支持以PNG、SVG格式导出模型结构图
+
+
+
+
+
+
+
+- 点击节点即可展示对应属性信息
+
+
+
+
+
+
+
+- 支持一键更换模型
+
+
+
+
+
+
+
+## Histogram--直方图组件
+
+### 介绍
+
+Histogram组件以直方图形式展示Tensor(weight、bias、gradient等)数据在训练过程中的变化趋势。深入了解模型各层效果,帮助开发者精准调整模型结构。
+
+### 记录接口
+
+Histogram 组件的记录接口如下:
+
+```python
+add_histogram(tag, values, step, walltime=None, buckets=10)
+```
+
+接口参数说明如下:
+
+| 参数 | 格式 | 含义 |
+| -------- | --------------------- | ------------------------------------------- |
+| tag | string | 记录指标的标志,如`train/loss`,不能含有`%` |
+| values | numpy.ndarray or list | 以ndarray或list格式表示的数据 |
+| step | int | 记录的步数 |
+| walltime | int | 记录数据的时间戳,默认为当前时间戳 |
+| buckets | int | 生成直方图的分段数,默认为10 |
+
+### Demo
+
+下面展示了使用 Histogram组件记录数据的示例,代码文件请见[Histogram组件](https://github.com/PaddlePaddle/VisualDL/blob/develop/demo/components/histogram_test.py)
+
+```python
+from visualdl import LogWriter
+import numpy as np
+
+
+if __name__ == '__main__':
+ values = np.arange(0, 1000)
+ with LogWriter(logdir="./log/histogram_test/train") as writer:
+ for index in range(1, 101):
+ interval_start = 1 + 2 * index / 100.0
+ interval_end = 6 - 2 * index / 100.0
+ data = np.random.uniform(interval_start, interval_end, size=(10000))
+ writer.add_histogram(tag='default tag',
+ values=data,
+ step=index,
+ buckets=10)
+```
+
+运行上述程序后,在命令行执行
+
+```shell
+visualdl --logdir ./log --port 8080
+```
+
+在浏览器输入`http://127.0.0.1:8080`,即可查看训练参数直方图。
+
+### 功能操作说明
+
+- 支持数据卡片「最大化」、直方图「下载」
+
+
+
+
+
+- 可选择Offset或Overlay模式
+
+
+
+
+
+
+ - Offset模式
+
+
+
+
+
+
+
+ - Overlay模式
+
+
+
+
+
+
+- 数据点Hover展示参数值、训练步数、频次
+
+ - 在第240次训练步数时,权重为-0.0031,且出现的频次是2734次
+
+
+
+
+
+- 可搜索卡片标签,展示目标直方图
+
+
+
+
+
+- 可搜索打点数据标签,展示特定数据流
+
+
+
+
+
+## PR Curve--PR曲线组件
+
+### 介绍
+
+PR Curve以折线图形式呈现精度与召回率的权衡分析,清晰直观了解模型训练效果,便于分析模型是否达到理想标准。
+
+### 记录接口
+
+PR Curve组件的记录接口如下:
+
+```python
+add_pr_curve(tag, labels, predictions, step=None, num_thresholds=10)
+```
+
+接口参数说明如下:
+
+| 参数 | 格式 | 含义 |
+| -------------- | --------------------- | ------------------------------------------- |
+| tag | string | 记录指标的标志,如`train/loss`,不能含有`%` |
+| labels | numpy.ndarray or list | 以ndarray或list格式表示的实际类别 |
+| predictions | numpy.ndarray or list | 以ndarray或list格式表示的预测类别 |
+| step | int | 记录的步数 |
+| num_thresholds | int | 阈值设置的个数,默认为10,最大值为127 |
+
+### Demo
+
+下面展示了使用 PR Curve 组件记录数据的示例,代码文件请见[PR Curve组件](#https://github.com/PaddlePaddle/VisualDL/blob/develop/demo/components/pr_curve_test.py)
+
+```python
+from visualdl import LogWriter
+import numpy as np
+
+with LogWriter("./log/pr_curve_test/train") as writer:
+ for step in range(3):
+ labels = np.random.randint(2, size=100)
+ predictions = np.random.rand(100)
+ writer.add_pr_curve(tag='pr_curve',
+ labels=labels,
+ predictions=predictions,
+ step=step,
+ num_thresholds=5)
+```
+
+运行上述程序后,在命令行执行
+
+```shell
+visualdl --logdir ./log --port 8080
+```
+
+接着在浏览器打开`http://127.0.0.1:8080`,即可查看PR Curve
+
+
+
+
+
+
+
+### 功能操作说明
+
+- 支持数据卡片「最大化」,「还原」、「下载」PR曲线
+
+
+
+
+
+- 数据点Hover展示详细信息:阈值对应的TP、TN、FP、FN
+
+
+
+
+
+- 可搜索卡片标签,展示目标图表
+
+
+
+
+
+- 可搜索打点数据标签,展示特定数据
+
+
+
+
+
+
+- 支持查看不同训练步数下的PR曲线
+
+
+
+
+
+- X轴-时间显示类型有三种衡量尺度
+
+ - Step:迭代次数
+ - Walltime:训练绝对时间
+ - Relative:训练时长
+
+
+
+
+
## High Dimensional -- 数据降维组件
### 介绍
@@ -207,16 +720,20 @@ High Dimensional 组件的记录接口如下:
```python
add_embeddings(tag, labels, hot_vectors, walltime=None)
```
+
接口参数说明如下:
-|参数|格式|含义|
-|-|-|-|
-|tag|string|记录指标的标志,如`default`,不能含有`%`|
-|labels|numpy.array 或 list|一维数组表示的标签,每个元素是一个string类型的字符串|
-|hot_vectors|numpy.array or list|与labels一一对应,每个元素可以看作是某个标签的特征|
-|walltime|int|记录数据的时间戳,默认为当前时间戳|
+
+| 参数 | 格式 | 含义 |
+| ----------- | ------------------- | ---------------------------------------------------- |
+| tag | string | 记录指标的标志,如`default`,不能含有`%` |
+| labels | numpy.array 或 list | 一维数组表示的标签,每个元素是一个string类型的字符串 |
+| hot_vectors | numpy.array or list | 与labels一一对应,每个元素可以看作是某个标签的特征 |
+| walltime | int | 记录数据的时间戳,默认为当前时间戳 |
### Demo
-下面展示了使用 High Dimensional 组件记录数据的示例,代码见[High Dimensional组件](../../demo/components/high_dimensional_test.py)
+
+下面展示了使用 High Dimensional 组件记录数据的示例,代码文件请见[High Dimensional组件](https://github.com/PaddlePaddle/VisualDL/blob/develop/demo/components/high_dimensional_test.py)
+
```python
from visualdl import LogWriter
@@ -237,7 +754,9 @@ if __name__ == '__main__':
labels=labels,
hot_vectors=hot_vectors)
```
+
运行上述程序后,在命令行执行
+
```shell
visualdl --logdir ./log --port 8080
```
@@ -245,5 +764,11 @@ visualdl --logdir ./log --port 8080
接着在浏览器打开`http://127.0.0.1:8080`,即可查看降维后的可视化数据。
-
+
+
+
+
+
+
+#