前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >神经网络可视化(一)——Netron

神经网络可视化(一)——Netron

作者头像
小草AI
发布2019-05-29 15:04:37
8.9K0
发布2019-05-29 15:04:37
举报

前言

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的安装与使用

Netron另外的一个特点就是支持的平台很多,在Linux、macOS。window上都可以像一款普通软件那样安装使用

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,很快安装完成

第二步:代码实现

代码语言:javascript
复制
import netron

netron.start(R"E:\tensorflow\fft_bp_v0.3\model_information\bpmodel.h5")

运行该python代码即会自动打开默认的浏览器,然后在浏览器中输入:

http://localhost:8080 即可得到同案例一中相同的效果。

其实就是一个函数的使用,我们查看一下这个函数的定义:

代码语言:javascript
复制
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): 服务器的默认地址,默认为: ''
    '''
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与python集中营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Netron另外的一个特点就是支持的平台很多,在Linux、macOS。window上都可以像一款普通软件那样安装使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档