Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 24 additions & 5 deletions demo/mxnet/TUTORIAL_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
- [安装MXNet](#%E5%AE%89%E8%A3%85mxnet)
- [安装VisualDL](#%E5%AE%89%E8%A3%85visualdl)
- [开始编写训练MNIST的程序](#%E5%BC%80%E5%A7%8B%E7%BC%96%E5%86%99%E8%AE%AD%E7%BB%83mnist%E7%9A%84%E7%A8%8B%E5%BA%8F)
- [用VisualDL展示模型图](#%E7%94%A8visualdl%E5%B1%95%E7%A4%BA%E6%A8%A1%E5%9E%8B%E5%9B%BE)


## 安装MXNet
请按照MXNet的[官方网站](https://mxnet.incubator.apache.org/get_started/install.html)来安装MXNet,并验证安装成功。
Expand All @@ -30,21 +32,21 @@ pip install --upgrade dist/visualdl-0.0.1-py2-none-any.whl
我们为您提供了一个演示程序 [mxnet_demo.py](./mxnet_demo.py)。里面展示了如何下载MNIST数据集以及编写MXNet程序来进行CNN的训练。MXNet的部分借鉴了MXNet[官方入门文件](https://mxnet.incubator.apache.org/tutorials/python/mnist.html)
为了嵌入VisualDL程序,以便在MXNet训练时进行检测,我们需要声明一个LogWriter实例:

```
logger = LogWriter(logdir, sync_cycle=10)
```python
logger = LogWriter(logdir, sync_cycle=30)
```

logger实例里面包含VisualDL的四个功能模块 Scalar, Image 以及 Histogram。这里我们使用 Scalar 模块:

```
```python
scalar0 = logger.scalar("scalars/scalar0")
```

模块的命名可以有 '/', 以便对于复杂模型创建不同的命名空间。

MXNet在fit函数中提供了很多[API](https://mxnet.incubator.apache.org/api/python/index.html)。我们把自己编写好的回调函数 add_scalar 插入到相应的 API中

```
```python
lenet_model.fit(train_iter,
eval_data=val_iter,
optimizer='sgd',
Expand All @@ -57,4 +59,21 @@ lenet_model.fit(train_iter,

这样就好了。在MXNet的训练过程中,每一个批次(batch)训练完后,都会调用我们的回调函数来对准确率进行记录。如您所料,随着训练的进行,准确率会不断上升直到95%以上。以下是两个epoch训练过后的准确率走向:

<p align=center><img width="80%" src="./epoch2_small.png" /></p>
<p align=center><img width="50%" src="./epoch2_small.png" /></p>

## 用VisualDL展示模型图

VisualDL的一个优点是能可视化深度学习模型,帮助用户更直观的了解模型的构成,都有哪些操作,哪些输入等等。VisualDL的模型图支持原生态的PaddlePaddle格式以及普遍适用的ONNX格式。在这里用户可以使用MXNet训练模型,然后用 [ONNX-MXNet] (https://github.com/onnx/onnx-mxnet) 工具将其转换成 ONNX 格式,然后进行可视化。
我们这里使用已经从MXNet转换到ONNX的现成模型 [Super_Resolution model](https://s3.amazonaws.com/onnx-mxnet/examples/super_resolution.onnx)

VisualDL的使用很简单,在完成安装后只需要把模型文件(protobuf格式)用参数 -m 提供给VisualDL即可。

```bash
visualDL --logdir=/workspace -m /workspace/super_resolution_mnist.onnx --port=8888
```

模型图的效果如下:

<p align=center><img width="70%" src="./mxnet_graph.gif" /></p>

生成的完整效果图可以在[这里](./super_resolution_graph.png)下载。
Binary file added demo/mxnet/mxnet_graph.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added demo/mxnet/super_resolution_graph.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.