前言
tensorflow,pytorch,mxnet每一个主流的深度学习框架都提供了相对应的可视化模板,那有没有一种方法更加具有通用性呢?我们会在论文中,相关文献中看到各种神经网络可视化的图形,有平面图形,三维立体图形,觉得很美观,你一定很好奇,这是不是使用绘图软件画的,还是只是用办公软件画的?对于人工智能研究者,那就太low了,人工智能都搞得定,还能被几幅图像给难住?本文带你一文看尽常用的一些神经网络可视化的开源项目。
鉴于篇幅较多,本次为系列文章第一篇。
目录
01 小草最爱——可视化程序之Netron
1.1 Netron简介
1.2 Netron支持的框架
1.3 Netron的安装与使用
1.4 使用案例
01
小草最爱之Netron
小草最爱——Netron
Netron简介
我也是用过一些深度神经网络可视化的工具,但是最喜欢就是这一款了,Netron,真的是无所不能,关键是简单快捷,就像平时的保存文件、打开文件这样,如此的简单高效,让人不得不爱。
这样一款神器的开发作者是微软的大神Lutz Roeder,在自己的家中完成的,看来大牛就是不一样。
项目GitHub:
https://github.com/lutzroeder/netron
Lutz Roeder个人网站:
https://www.lutzroeder.com/
小草总结了几点Netron之所那么强大的原因:
(1)所支持的平台广泛。不想tensorboard等较为“专一”的可视化平台,当前主流的深度学习框架,Netron都能得到很好的支持;
(2)操作简单快捷。不需要写一行代码,只需要下载软件安装,然后打开需要可视化的文件,一步操作即可,当然也可以通过代码实现;
(3)保存快捷。对于可视化的结果,就像保存普通的文件一样,一步到位,保存在自己的电脑上。
小草最爱——Netron
Netron支持的框架
在复现别人的模型的时候,有时我们要知道一个模型的输入与输出名,可是有时作者并没有告诉我们,要我们自己去查,有了这个工具可以清晰地看见网络的输入输出名,具体的网络结构。相比tensorboard它更加轻量化,而且支持各种框架。而Netron最为强大的功能,就在于它所支持的框架十分广泛,下面是一些支持的框架:
ONNX (.onnx
, .pb
, .pbtxt
),
Keras (.h5
, .keras
),
CoreML (.mlmodel
),
Caffe2 (predict_net.pb
, predict_net.pbtxt
),
MXNet (.model
, -symbol.json
)
TensorFlow Lite (.tflite
).
Caffe (.caffemodel
, .prototxt
),
PyTorch (.pth
),
Torch (.t7
),
CNTK (.model
, .cntk
),
PaddlePaddle(__model__
),
Darknet (.cfg
),
scikit-learn (.pkl
),
TensorFlow.js (model.json
, .pb
)
TensorFlow (.pb
, .meta
, .pbtxt
).
小草最爱——Netron
Netron的安装与使用
macOS: Download the .dmg
file or run brew cask install netron
Linux: Download the .AppImage
or .deb
file.
Windows: Download the .exe
installer.
除此之外,它还提供了更简便的非安装使用方法,在浏览器中进行使用,只要打开链接,即可在浏览器中进行一键式的网络可视化操作。
Browser: Start the browser version.
对于Python开发者而言,我还可以使用Python代码来进行模型可视化,只需要简简单单的几行代码即可实现。
Python Server: Run pip install netron
and netron [FILE]
or import netron; netron.start('[FILE]')
小草最爱——Netron
Netron的使用案例
案例一:网页版Netron
直接单击: Start the browser version.
或者是输入如下链接:https://lutzroeder.github.io/netron/
会打开一个网页,网页的界面很简单,直接单击网页中的Open Model按钮,选择需要可视化的文件(文件类型参见上面)。
本文以自己所搭建的一个三层全连接网络,使用的框架为keras,故而保存的模型为.h5文件,打开的效果图如下:
从图中我们可以看出,每一个网络层的名称,输入输出数据的维度等信息,十分的简单方便,不仅如此,我还可以通过滚动鼠标扩大或者是缩小来查看更多的细节。
在网页的左上角,有三个按钮,如下:
第一个为“保存”,可以将模型结构保存为图片;
第二个、第三个为放大缩小按钮。
是不是很简单方便?
案例二:python版Netron
作为一个python最忠实的拥簇者,怎么能没有python呢?使用Python进行可视化也很简单。
第一步:安装Netron
pip install netron
大约2.1M,很快安装完成
第二步:代码实现
import netron
netron.start(R"E:\tensorflow\fft_bp_v0.3\model_information\bpmodel.h5")
运行该python代码即会自动打开默认的浏览器,然后在浏览器中输入:
http://localhost:8080 即可得到同案例一中相同的效果。
其实就是一个函数的使用,我们查看一下这个函数的定义:
def start(file, verbose=False, browse=True, port=8080, host=''):
'''Start serving model file at host:port and open in web browser
Args:
file (string): 需要打开的文件路径.
verbose (bool, optional): 布尔值,是否在控制台上输出日志详情,默认为False
如果设置为True,则会在控制台上打印一些列的信息
browse (bool, optional): 布尔值,是否启动浏览器,默认为True,即程序运行了会启动默认的浏览器
注意,它只会默认启动浏览器,画的图形并不会直接显示哦,还需要手动输入
http://localhost:8080
port (int, optional): int类型,默认的端口号: 8080
host (string, optional): 服务器的默认地址,默认为: ''
'''
本文分享自 机器学习与python集中营 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!