首页 > 其他分享 >【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重

时间:2022-10-12 21:33:36浏览次数:92  
标签:文件 框架 18 模型 杂谈 开源 可视化 网络结构


深度学习开源框架众多,对于开发者来说其中有一个很硬的需求,就是模型结构和权重的可视化。使用过Caffe的同学都因为强大的Netscope可以离线修改实时可视化网络结构而暗爽,那其他的框架怎么样呢?


今天给大家介绍一个可以离线可视化各大深度学习开源框架模型结构和权重的项目,netron

作者&编辑 | 言有三

1 项目介绍

项目开发者Lutz Roeder,一位来自于微软Visual Studio团队的小哥,按照他自己的介绍,就是在家搞点AI tools玩玩。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_深度学习

这是过去一年的contributions,基本就没有停过,这是真正硬核的开源贡献者呀,个人主页https://www.lutzroeder.com/ai,有兴趣可以去瞧瞧。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_tensorflow_02

Netron是他开源的深度学习模型可视化工具,项目地址为:

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_03

​https://github.com/lutzroeder/netron​

目前支持哪些框架呢?

  • ONNX (.onnx, .pb, .pbtxt)
  • Keras (.h5, .keras)
  • Core ML (.mlmodel)
  • Caffe (.caffemodel, .prototxt)
  • Caffe2 (predict_net.pb, predict_net.pbtxt)
  • MXNet (.model, -symbol.json)
  • TorchScript (.pt, .pth)
  • NCNN (.param)
  • TensorFlow Lite (.tflite)
  • PyTorch (.pt, .pth)
  • Torch (.t7)
  • CNTK (.model, .cntk)
  • Deeplearning4j(.zip)
  • PaddlePaddle (.zip, __model__)
  • Darknet (.cfg)
  • scikit-learn (.pkl)
  • TensorFlow.js (model.json, .pb)
  • TensorFlow (.pb, .meta, .pbtxt).

共18个框架,除了chainer,matconvnet等框架基本上把数得上名字的框架一网打尽,下面是ONNX的可视化界面,很visual studio的感觉。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_04

另一方面,小哥哥也是非常的贴心,提供了各大平台的安装包!macOS的.dmg,Linux的.deb,Windows的.exe,还有浏览器版本,Python服务器版本,真是good man,小白们再也不用担心环境配置问题。

2 可视化实验

下面我们就来尝试几个框架的可视化结果,首先要祭出有三AI开源的12大深度学习开源框架的项目,从模型和数据接口定义,到训练测试可视化,提供了全套代码,地址如下:

​https://github.com/longpeng2008/yousan.ai​

具体的教程大家可以跳转阅读原文。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_05

这12个框架我们都使用一个3层的卷积模型来完成一个图像分类问题,下面挑选其中几个常用的来体验可视化效果。

2.1 Caffe

Caffe模型可视化的输入可以是prototxt文件和caffemodel文件。下面首先分别可视化训练网络和测试网络train.prototxt和deploy.prototxt,结果如下:

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_tensorflow_06

比起Netscope,是不是效果也不遑多让。如果想要查看某一个网络层的细节,就可以点击该网络层,结果如下,所有网络配置参数细节皆可见,完美!

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_07

这就是全部了吗?当然不,你还可以直接载入.caffemodel权重文件,直接查看每一个网络层的权重!


老司机们可以从中简单统计权重的分布,还可以一键导出参数为npy文件,看到那个保存小按钮没有,这就是细节,不得不再次给小哥哥点赞???

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_08

2.2 keras

keras的可视化输入是json格式的模型文件,可以通过model.to_json()将模型存储下来,然后载入.json文件。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_09

如果想查看权重,就载入.h5文件,结果如下,虽然没有caffe的那么漂亮,也是很直观的,不过权重参数矩阵顺序不太一样。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_10

2.3 tensorflow

要想可视化tensorflow的模型结构,就必须将模型存储为pb格式,这样就能同时保存网络结构和参数了,结果如下。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_tensorflow_11

2.4 pytorch

pytorch的网络结构可视化不支持,不过可以像keras一样查看pt权重文件。如果想可视化网络结构,可以使用yousan.ai项目中pytorch目录下的visualize.py脚本。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_12

2.5 Mxnet

Mxnet通过symbol接口定义网络,网络结构一般存在后缀为symbol.json的文件中,因此载入该文件即可进行可视化。权重的可视化原理类似,就不做赘述。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_深度学习_13

2.6 Darknet

DarkNet的网络结构定义在cfg文件中,载入该cfg文件即可进行可视化。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_权重_14

其他开源框架的案例,大家可以去下载我们的开源框架项目进行尝试,感谢小哥作出的贡献!

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_深度学习_15

另外再安利一下我们之前的讲述如何绘制更好看的网络结构的文章,一起享用,保证更香。

【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重_tensorflow_16

总结

平时多留意一些好的工具,可以大大提升我们的学习效率,养成好的学习习惯,欢迎大家给我们推荐好的工具

标签:文件,框架,18,模型,杂谈,开源,可视化,网络结构
From: https://blog.51cto.com/u_14122493/5751601

相关文章

  • 【杂谈】爬虫基础与快速入门指南
    今天给大家分享一下网络爬虫的基础知识,以及一些优秀的开源爬虫项目。网络爬虫主要是我们在面对新的任务,但自己又没有数据的时候,获取自己想要的数据的一种手段。因此我们有必......
  • CSP-S模拟18
    先放个代码,等改完T3再写思路代码#include<bits/stdc++.h>#definereregister#definelllonglong#defineullunsignedlonglongusingnamespacestd;inlinei......
  • 杂谈:我为啥不喜欢用新语法不喜欢用动态语句
    最近接手的代码,怎么说呢?原作者水平肯定是有的,而且很高。但是明显的一个感觉就是他特别喜欢用动态语句。喜欢用一些新语法。后来的一些改动,比较大的时候我直接就把动......
  • 杂谈:清北“人才”应该走上顶层还是走下基层_SAP刘梦_新浪博客
    写的挺好的。我也想谈谈我自己的一些看法。虽然我身边没啥清北,但是身边有一帮基层工作者。​​​​这是之前网上热议的余杭区街道办事处招聘的部分信息。48个人里,38......
  • CSP-S模拟18
    再次模拟退役,最近心态又双叒叕有点炸。。。。实力确实也真不行A.最长反链猜结论,从大到小能选就选,然后打表发现能选与不能选有明显的分界,于是直接二分答案然后因为判断......
  • 【杂谈】GAN对人脸图像算法产生了哪些影响?
    人脸图像是整个图像领域里面研究人员最多,应用最广的一个方向。GAN作为时下最新兴的深度学习模型,在人脸图像领域里已经颇有建树,今天咱们就聊聊GAN对人脸图像算法的一些主要影......
  • 【杂谈】有三AI专栏作者邀请,在这里写文章能获得什么,有什么不同?
    知识分享平台众多,我们有三AI公众号是其中一个,这次主要是来邀请大家加入有三AI平台,成为专栏作者或者投稿综述性质的文章。我们公众号这一年多来已经创作了450多篇原创文章,超......
  • 【杂谈】当前模型量化有哪些可用的开源工具?
    模型量化属于模型优化中的重要技术之一,是非常有效地提升模型推理速度的技术方案,那么当前有哪些可用的模型量化工具呢?作者&编辑|言有三1 TensorflowLiteTensorFlowLite......
  • Python 为什么要在 18 年前引入布尔类型?且与 C、C++ 和 Java 都不同?
    花下猫语:在上一篇《​​Python为什么能支持任意的真值判断?​​》文章中,我们分析了Python在真值判断时的底层实现,可以看出Python在对待布尔值时,采用了比较宽泛的态度。......
  • 数维图3D可视化引擎 打造全息感知数字孪生智慧车站
    建设背景智慧轨道交通建设是交通强国建设的战略突破口,也是未来轨道交通行业的发展方向。城市轨道交通是城市最重要的公共交通工具之一,具有节能、省地、运量大、全天候、少污......