Metadata-Version: 2.1
Name: visualdl
Version: 2.0.0a0
Summary: Visualize Deep Learning
Home-page: UNKNOWN
Author: PaddlePaddle and Echarts team
License: Apache License
Keywords: visualization deeplearning
Platform: UNKNOWN
Description-Content-Type: text/markdown
Requires-Dist: recommonmark (>=0.6.0)
Requires-Dist: sphinx-rtd-theme (>=0.4.3)
Requires-Dist: flake8 (>=3.7.9)
Requires-Dist: flask (>=1.1.1)
Requires-Dist: Flask-Babel (>=1.0.0)
Requires-Dist: six (>=1.14.0)
Requires-Dist: protobuf (>=3.1.0)
Requires-Dist: numpy (==1.16.6) ; python_version < "3.0"
Requires-Dist: scipy (==1.2.3) ; python_version < "3.0"
Requires-Dist: Sphinx (==1.8.5) ; python_version < "3.0"
Requires-Dist: Pillow (==6.2.2) ; python_version < "3.0"
Requires-Dist: pre-commit (==1.21.0) ; python_version <= "3.5"
Requires-Dist: pre-commit (>=2.2.0) ; python_version > "3.5"
Requires-Dist: numpy ; python_version >= "3.0"
Requires-Dist: scipy (>=1.4.1) ; python_version >= "3.0"
Requires-Dist: Sphinx (>=2.4.4) ; python_version >= "3.0"
Requires-Dist: Pillow (>=7.0.0) ; python_version >= "3.0"

[![Build Status](https://travis-ci.org/PaddlePaddle/VisualDL.svg?branch=develop)](https://travis-ci.org/PaddlePaddle/VisualDL)
[![Documentation Status](https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat)](https://github.com/PaddlePaddle/VisualDL/tree/develop/docs)
[![Release](https://img.shields.io/github/release/PaddlePaddle/VisualDL.svg)](https://github.com/PaddlePaddle/VisualDL/releases)
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)

<p align="center">
  <img src="/frontend/packages/core/public/images/logo-visualdl.svg" width="60%"/>
</p>

## 介绍
VisualDL是一个面向深度学习任务设计的可视化工具，利用丰富的图表展示数据，用户可以更直观、清晰地查看数据的特征与变化趋势，有助于分析数据、及时发现错误，进而改进神经网络模型的设计。

目前，VisualDL支持Scalar, Image, High Dimensional, Graph 这四个组件，项目正处于高速迭代中，新的组件会不断加入。

目前大多数DNN平台均使用Python作为配置语言，VisualDL原生支持python的使用，
通过在模型的Python配置中添加几行，便可以为训练过程提供丰富的可视化支持。


## 组件
VisualDL 目前支持以下组件：

- scalar
- image
- high dimensional
- graph

### Scalar
可以用于展示训练测试的误差趋势

<p align="center">
<img src="https://raw.githubusercontent.com/daming-lu/large_files/master/loss_scalar.gif" width="60%"/>
</p>

### Histogram

用于可视化任何tensor中元素分布的变化趋势

<p align="center">
<img src="https://raw.githubusercontent.com/daming-lu/large_files/master/histogram.gif" width="60%"/>
</p>

### Image
可以用于可视化任何tensor，或模型生成的图片

<p align="center">
<img src="https://raw.githubusercontent.com/daming-lu/large_files/master/loss_image.gif" width="60%"/>
</p>

### Audio
可用于播放输入或生成的音频样本

### Graph
VisualDL的graph支持paddle program的展示，同时兼容 ONNX(Open Neural Network Exchange)[https://github.com/onnx/onnx]，通过与 python SDK的结合，VisualDL可以兼容包括 PaddlePaddle, pytorch, mxnet在内的大部分主流DNN平台。

<p align="center">
  <img src="https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/docs/images/graph_demo.gif" width="60%" />
</p>

要进行paddle模型的展示，需要进行以下两步操作：

1. 在paddle代码中，调用`fluid.io.save_inference_model()`接口保存模型
2. 在命令行界面，使用`visualdl --model_pb [paddle_model_dir]` 加载paddle模型

### High Dimensional

用高维度数据映射在2D/3D来可视化嵌入

<p align="center">
<img src="https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/docs/getting_started/high_dimensional_3d.png" width="60%"/>
</p>

## 快速尝试
请使用下面的命令，来快速测试 VisualDL。

```
# 安装，建议是在虚拟环境或anaconda下。
pip install --upgrade visualdl

# 运行一个例子，vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
visualdl --logdir=scratch_log --port=8080

# 访问 http://127.0.0.1:8080
```

如果出现`TypeError: __init__() got an unexpected keyword argument 'file'`, 是因为protobuf不是3.5以上，运行`pip install --upgrade protobuf`就能解决。

如果以上步骤还有出现其他问题，很可能是因为python或pip不同版本或不同位置所致，以下安装方法能解决。

## 使用 virtualenv 安装

[Virtualenv](https://virtualenv.pypa.io/en/stable/) 能创建独立Python环境，也能确保Python和pip的相对位置正确。

在macOS上，安装pip和virtualenv如下：
```
sudo easy_install pip
pip install --upgrade virtualenv
```

在Linux上，安装pip和virtualenv如下:
```
sudo apt-get install python3-pip python3-dev python-virtualenv
```

然后创建一个虚拟环境：
```
virtualenv ~/vdl  # for Python2.7
virtualenv -p python3 ~/vdl for Python 3.x
```

```~/vdl``` 是你的Virtualenv目录, 你也可以选择任一目录。

激活虚拟环境如下：
```
source ~/vdl/bin/activate
```

现在再安装 VisualDL 和运行范例：

```
pip install --upgrade visualdl

# 运行一个例子，vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
visualdl --logdir=scratch_log --port=8080

# 访问 http://127.0.0.1:8080
```

如果在虚拟环境下仍然遇到安装问题，请尝试以下方法。


## 使用 Anaconda 安装

Anaconda是一个用于科学计算的Python发行版，提供了包管理与环境管理的功能，可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。

请根据[Anaconda下载网站](https://www.anaconda.com/download) 的指示去下载和安装Anaconda.
下载Python 3.6版本的command-Line installer.

创建conda环境名字为```vdl```或任何名字:
```
conda create -n vdl pip python=2.7 # or python=3.3, etc.
```

激活conda环境如下:
```
source activate vdl
```

现在再安装 VisualDL 和运行范例：

```
pip install --upgrade visualdl

# 运行一个例子，vdl_create_scratch_log 将创建测试日志
vdl_create_scratch_log
visualdl --logdir=scratch_log --port=8080

# 访问 http://127.0.0.1:8080
```

如果仍然遇到安装问题，请尝试以下用源代码安装方法。

### 使用代码安装
```
#建議是在虚拟环境或anaconda下。
git clone https://github.com/PaddlePaddle/VisualDL.git
cd VisualDL

python setup.py bdist_wheel
pip install --upgrade dist/visualdl-*.whl
```

如果打包和安装遇到其他问题，不安装只想运行Visual DL可以看[这里](https://github.com/PaddlePaddle/VisualDL/blob/develop/docs/how_to_dev_frontend_en.md)


## SDK
VisualDL 同时提供了python SDK 和 C++ SDK 来实现不同方式的使用。

### Python SDK
VisualDL 现在支持 Python 2和 Python 3。

以最简单的Scalar组件为例，尝试创建一个scalar组件并插入多个时间步的数据：

```python
import random
from visualdl import LogWriter

logdir = "./tmp"
logger = LogWriter(logdir, sync_cycle=10000)

# mark the components with 'train' label.
with logger.mode("train"):
    # create a scalar component called 'scalars/scalar0'
    scalar0 = logger.scalar("scalars/scalar0")

# add some records during DL model running.
for step in range(100):
    scalar0.add_record(step, random.random())
```

### C++ SDK
上面 Python SDK 中代码完全一致的C++ SDK用法如下
```c++
#include <cstdlib>
#include <string>
#include "visualdl/sdk.h"

namespace vs = visualdl;
namespace cp = visualdl::components;

int main() {
  const std::string dir = "./tmp";
  vs::LogWriter logger(dir, 10000);

  logger.SetMode("train");
  auto tablet = logger.AddTablet("scalars/scalar0");

  cp::Scalar<float> scalar0(tablet);

  for (int step = 0; step < 1000; step++) {
    float v = (float)std::rand() / RAND_MAX;
    scalar0.AddRecord(step, v);
  }

  return 0;
}
```
## 启动Board
当训练过程中已经产生了日志数据，就可以启动board进行实时预览可视化信息
### 在命令行中启动

```
visualdl --logdir <some log dir>
```

board 还支持一些参数来实现远程的访问：

- `--host` 设定IP
- `--port` 设定端口
- `-m / --model_pb` 指定 ONNX 格式的模型文件
### 在Python脚本中启动
```python
>>> from visualdl.server import app

>>> app.run(logdir="SOME_LOG_DIR")
```
`app.run()`支持命令行启动的所有参数，除此之外，还可以通过指定`open_browser=True`，自动打开浏览器。
### 贡献

VisualDL 是由 [PaddlePaddle](http://www.paddlepaddle.org/) 和
[ECharts](http://echarts.baidu.com/) 合作推出的开源项目。我们欢迎所有人使用，提意见以及贡献代码。



## 更多细节

想了解更多关于VisualDL的使用介绍，请查看[文档](https://github.com/PaddlePaddle/VisualDL/tree/develop/demo)


