(图片付费下载于视觉中国)
作者 | 言有三
来源 | 有三AI(ID:yanyousan_ai)
【导读】本文我们聊聊如何才能画出炫酷高大上的神经网络图,下面是常用的几种工具。
1、NN-SVG
NN-SVG 可以非常方便的画出各种类型的图,其作者是下面这位小哥哥开发的,他来自于麻省理工学院弗兰克尔生物工程实验室, 该实验室开发可视化和机器学习工具用于分析生物数据。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/b0a72b5e0c0d11f4c16e35e7382d0231.jpeg)
github地址:
https://github.com/zfrenchee
画图工具体验地址:
http://alexlenail.me/NN-SVG/
使用这个工具可以绘制的图包括以节点形式展示的FCNN style,这个特别适合传统的全连接神经网络的绘制。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/5c093543ac49d1816da9bf98469e69bd.jpeg)
以平铺网络结构展示的LeNet style,用二维的方式,适合查看每一层featuremap的大小和通道数目。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/19b42b62772d16762a82b7daa1c1d690.jpeg)
以三维block形式展现的AlexNet style,可以更加真实地展示卷积过程中高维数据的尺度的变化,目前只支持卷积层和全连接层。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/7f9eaec6ab1abfd28e20bba4c4208162.jpeg)
这个工具可以导出非常高清的SVG图,值得体验。
2、PlotNeuralNet
这个工具是萨尔大学计算机科学专业的一个学生开发的,一看就像计算机学院的嘛。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/1c09d110edb872666ba798ba3b24b3f6.jpeg)
首先我们看看效果,其github链接如下,将近4000 star:
https://github.com/HarisIqbal88/PlotNeuralNet
看看人家这个fcn-8的可视化图,颜值奇高。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/0db031bb1a3f111835129bd05d285a16.jpeg)
使用的门槛相对来说就高一些了,用LaTex语言编辑,所以可以发挥的空间就大了,你看下面这个softmax层,这就是会写代码的优势了。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/2de92ecc18150fdf1e890b6c209b7b24.jpeg)
其中的一部分代码是这样的,会写吗。
\pic[shift={(0,0,0)}] at (0,0,0) {Box={name=crp1,caption=SoftmaxLoss: $E_\mathcal{S}$ ,% fill={rgb:blue,1.5;red,3.5;green,3.5;white,5},opacity=0.5,height=20,width=7,depth=20}};
相似的工具还有:
https://github.com/jettan/tikz_cnn
3、ConvNetDraw
ConvNetDraw 是一个使用配置命令的CNN神经网络画图工具,开发者是香港的一位程序员,Cédric cbovar。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/1dd2543a102a62691f031004d3f8031a.jpeg)
采用如下的语法直接配置网络,可以简单调整x,y,z等3个维度,github链接如下:
https://cbovar.github.io/ConvNetDraw/
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/9279c9bb6a2f565c6b27492d16950890.png)
使用方法如上图所示,只需输入模型结构中各层的参数配置。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/fcb74745cdae04eb6bf0a34211232f05.png)
挺好用的不过它目标分辨率太低了,放大之后不清晰,达不到印刷的需求。
4、Draw_Convnet
这一个工具名叫draw_convnet,由Borealis公司的员工Gavin Weiguang Ding提供。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/46ef35bb89e702f49dfaa7e65d31d628.jpeg)
简单直接,是纯用python代码画图的,
https://github.com/gwding/draw_convnet
看看画的图如下,核心工具是matplotlib,图不酷炫,但是好在规规矩矩,可以严格控制,论文用挺合适的。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/719301aa475b7e455a21c7f9244a28c5.png)
类似的工具还有:
https://github.com/yu4u/convnet-drawer
5、Netscope
下面要说的是这个,我最常用的,caffe的网络结构可视化工具,大名鼎鼎的netscope,由斯坦福AILab的Saumitro Dasgupta开发,找不到照片就不放了,地址如下:
https://github.com/ethereon/netscope
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/66014842994438c4428c90eac8d1820f.jpeg)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/10db640bad8b50ed6b8f9343a24117c8.jpeg)
左边放配置文件,右边出图,非常方便进行网络参数的调整和可视化。这种方式好就好在各个网络层之间的连接非常的方便。
其他
再分享一个有意思的,不是画什么正经图,但是把权重都画出来了。
http://scs.ryerson.ca/~aharley/vis/conv/
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/ad861462a7428260c963bd7772eb154a.jpeg)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/656dd8f752448c22bc2fc043cbbb382d.jpeg)
看了这么多,有人已经在偷偷笑了,上PPT呀,想要什么有什么,想怎么画就怎么画。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/d9cc0098af9f55e449676548f44114a0.jpeg)
不知有没有人想过
开发一个粉色系的可视化工具呢?
类似于下面这张图的风格:
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/87bda3f8884ce5ef808f332d5f868827.jpeg)
你使用的是哪种方式画图呢?有什么好方法、好工具安利?评论区留言与大家分享吧!
(*本文为AI科技大本营转载文章,转载请联系作者)
◆
精彩推荐
◆
【结果提交倒计时】PV,UV流量预测算法大赛,结果提交截止时间为
9月20日
,还没有提交的小伙伴抓紧时间了~~9月25日公布初赛成绩。
最新排行榜请扫码查看。
推荐阅读
dfuse、慢雾科技、MYKEY共同出席,与你探讨区块链数据架构和项目上链那些事!
大数据工程师手册:全面系统的掌握必备知识与工具
演讲实录:知乎算法团队负责人孙付伟:Graph Embedding在知乎的应用实践
NASNet:神经架构搜索网络在图像分类中的表现
实操 | 从0到1教你用Python来爬取整站天气网
我们到底该如何看待6G?
互联网大佬为什么爱唱歌
惊呆!这辆悍马自己在跑跑跑跑跑跑跑!
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/2cba20d74577dec51dc9daf89a6a59e5.png)
你点的每个“在看”,我都认真当成了喜欢