111升学论坛

 找回密码
 加入家园
专业、学校怎么选?免费公益咨询解答开通学校版块微信:543646没考上高中怎么办,不要慌!
热门:大连报关学校招生网增加印象分,实用新型专利包过申请发明专利申请并不难,代写全部材料,轻松申请!
查看: 814|回复: 8

神经网络结构可视化工具总结实践大全

[复制链接]

41

主题

72

回帖

345

积分

中级会员

Rank: 3Rank: 3

积分
345
发表于 2021-2-17 10:22:58 | 显示全部楼层 |阅读模式
集群智慧云科服发明专利申请
对于我们算法分析人员来说,机器学习和神经网络早已不是什么新鲜内容,搭建、训练出来一个好的模型用于线上生产是必不可少的基础功能,对于业务人员或者是对于模型细节并不是很清楚或者是关注的人来说,这个就显得很抽象了,这个时候必要的可视化工作就显得很重要了,当前比较成熟的可视化工具大致包括:matplotlib、seaborn、Chaco 、pychart 、VPython 、yellowbrick等,这些是比较主流使用比较多的模块,但是对于模型结构的可是话来说显得就比较鸡肋了,这里迫切需要一些专业领域内的工具来帮助我们完成这些工作。
本文主要针对博主自身3年的模型经验过程中使用到的比较多的工具进行总结说明,后续发现好的工具的话会持续更新本文,欢迎感兴趣的朋友留言推荐。
首先,我们来看几张成品模型的结构图片,如下所示:
SjuC7W0064265fxc.jpg



CPYjzl76PqYyyj4L.jpg



tYdG53qHsoT2S2dH.jpg



peo1Lo4WDLEolLXW.jpg



r9lBLPAI337plIuW.jpg



Sm6eF41FCdLneVcN.jpg



pGjXR3RAh7Oe4RA3.jpg



上面的这些图片都是可以一键生成的,顿时觉得功能很强大的,各位在看网络结构可视化的时候有没有猜出来各个图像对应的是哪一种模型结构呢?【从上到下分别是:FCNN、LeNet、AlexNet】
想不想试试,这款神器叫【NN-SVG】在线地址在这里。GitHub地址在这里。赶快上手试用吧。
接下来我们继续看图,如下所示:
odFfP0wW0wZZSgfJ.jpg



gSPs60f0PwsgGSkv.jpg



同样是支持一键式生成,优点还有支持参数自定义模型结构,比如上面这幅图片的绘制源码如下:
input(28, 28, 1)
conv(24, 24, 8)
conv(24, 24, 8)
conv(24, 24, 8)
conv(24, 24, 8)
relu(24, 24, 8)
pool(12, 12, 8)
conv(10, 10, 16)
relu(10, 10, 16)
pool(4, 4, 16)
fullyconn(1, 1, 10)
softmax(1, 1, 10)真的是纯参数,很简洁的一个结构定义。
这款神器叫【ConvNetDraw】,在线地址在这里。GitHub地址在这里。感兴趣的话就拿去试用吧。
接下来我们继续看图,如下所示:
O06v19JRQUq18IJx.jpg



PXUsxYywZx3biUBw.jpg



YM082M5yjJZ8m8Mm.jpg



官方给出来的一个简单的绘图实例如下:
import sys
sys.path.append('../')
from pycore.tikzeng import *

# defined your arch
arch = [
to_head( '..' ),
to_cor(),
to_begin(),
to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=64, depth=64, width=2 ),
to_Pool("pool1", offset="(0,0,0)", to="(conv1-east)"),
to_Conv("conv2", 128, 64, offset="(1,0,0)", to="(pool1-east)", height=32, depth=32, width=2 ),
to_connection( "pool1", "conv2"),
to_Pool("pool2", offset="(0,0,0)", to="(conv2-east)", height=28, depth=28, width=1),
to_SoftMax("soft1", 10 ,"(3,0,0)", "(pool1-east)", caption="SOFT" ),
to_connection("pool2", "soft1"),
to_end()
]

def main():
namefile = str(sys.argv[0]).split('.')[0]
to_generate(arch, namefile + '.tex' )

if __name__ == '__main__':
main()模型结构的可视化都是基于参数的输入设定直接绘制保存本地的,这款神器的绘图效果个人觉得相比上面几种来说更美观一点,不知道大家怎么看,这款神器的名字叫【PlotNeuralNet】,是一位专业科班的大神编写的,效果还是很不错的。暂时没有提供在线体验地址,这里给出来GitHub地址。
接下来我们继续来看图,如下所示:


y98rXmr89jhf8m5h.jpg



zlWnwBlwlk23N3LW.jpg



WUCSCps7N9s6UCr7.jpg



lNCoaN90T0ScIjHI.jpg



个人感觉这个网络可视化工具没有特别大的创新点,主要的亮点就在于在网络的输入和输出的地方加入了输入图片和转换处理后的结果图片,视觉上更加直观了。这款工具的GitHub地址在这里。
接下来我们继续看图,如下所示:
F9y2xrsr9FSE9hPR.jpg



mz00L1LBJllJY0GC.jpg



这个工具绘图给我的第一感觉就是很朴素,这个号称是完全基于Python编写的神经网络结构可视化工具,读了源码以后发现其实就是基于matplotlib做的封装,不过效果还可以的吧,毕竟比较简单嘛。这款工具的GitHub地址在这里。感兴趣的话安装一些基础包之后就可以试用了。
接下来我们继续看图,如下所示:
Gl272I2Mz5I7m23X.jpg



Ives3dvEEvcVDxVM.jpg



S28O8OrG28z2rQ82.jpg



b6HHTCycnZZQvGEc.jpg



这款绘图神器一眼看去最大的印象就是模型结构图里面的参数特别的多,个人感觉比较适合学术论文或者汇报ppt里面去用,这里提供了SVG、pdf和pptx三种结果保存形式,可以根据自己的实际需要去选择。当然了这款神器还提供了一种手绘风格的网络结构可视化方法,效果图如下所示:
su56Rs7GdsbQrsG0.jpg



手绘网络结构是不是看上去还是听有意思的呢,其实将matplotlib的绘图结果转化为手绘风格的绘图结果并不难的,感兴趣的话可以参考我的博客文章:
【Python使用matplotlib绘制卡通、手绘风格的图像】
https://yishuihancheng.blog.csdn.net/article/details/99462001
一文教你快速掌握Python手绘风格图像的制作。
官方给出来的一个简单的模型可视化源码如下所示:
from convnet_drawer import Model, Conv2D, MaxPooling2D, Flatten, Dense
from pptx_util import save_model_to_pptx
from matplotlib_util import save_model_to_file
model = Model(input_shape=(227, 227, 3))
model.add(Conv2D(96, (11, 11), (4, 4)))
model.add(MaxPooling2D((3, 3), strides=(2, 2)))
model.add(Conv2D(256, (5, 5), padding="same"))
model.add(MaxPooling2D((3, 3), strides=(2, 2)))
model.add(Conv2D(384, (3, 3), padding="same"))
model.add(Conv2D(384, (3, 3), padding="same"))
model.add(Conv2D(256, (3, 3), padding="same"))
model.add(MaxPooling2D((3, 3), strides=(2, 2)))
model.add(Flatten())
model.add(Dense(4096))
model.add(Dense(4096))
model.add(Dense(1000))
# save as svg file
model.save_fig("example.svg")
# save as pptx file
save_model_to_pptx(model, "example.pptx")
# save via matplotlib
save_model_to_file(model, "example.pdf")基于keras来定义模型,整体来说还是非常简洁的。这款神器的名字叫【convnet-drawer】,暂时还没有在线体验地址,GitHub地址在这里。
最后再给大家介绍一款绘图神器,这里就不贴图了,因为它需要你自己去导入模型,在线地址在这里。GitHub地址在这里。首页截图如下:
TZg8zJDcWgxvJsz8.jpg



点击【Open Model】就可以加载模型了。官方还提供了可直接安装使用的文件,下载仓库在这里。截图如下所示:
ByP5XJ2v2V4aw5e4.jpg



windows环境直接安装上述exe文件即可。
除上面介绍的比较通用性的神经网络模型结构可视化工具之外,还有一些只针对于特定库使用的模型可视化工具,比如:仅支持Caffe绘图的NetScope,在线地址在这里,效果图如下所示:
pQxrERnxZi1qcQBI.jpg





当然,除了本文介绍的神经网络可视化工具之外还有一些比较好用的工具,但是博主本身几乎或者是极少使用到,这里就不再进行介绍了,欢迎交流。
回复

使用道具 举报

31

主题

56

回帖

279

积分

中级会员

Rank: 3Rank: 3

积分
279
发表于 2021-2-17 10:23:51 | 显示全部楼层
转发了
回复

使用道具 举报

16

主题

88

回帖

324

积分

中级会员

Rank: 3Rank: 3

积分
324
发表于 2021-2-17 10:24:44 | 显示全部楼层
转发了
回复

使用道具 举报

51

主题

55

回帖

340

积分

中级会员

Rank: 3Rank: 3

积分
340
发表于 2021-2-17 10:25:37 | 显示全部楼层
转发了
回复

使用道具 举报

21

主题

33

回帖

152

积分

新手上路

Rank: 1

积分
152
发表于 2021-2-17 10:26:30 | 显示全部楼层
转发了
回复

使用道具 举报

46

主题

91

回帖

431

积分

中级会员

Rank: 3Rank: 3

积分
431
发表于 2021-2-17 10:27:23 | 显示全部楼层
转发了
回复

使用道具 举报

38

主题

66

回帖

334

积分

中级会员

Rank: 3Rank: 3

积分
334
发表于 2021-2-17 10:28:16 | 显示全部楼层
转发了
回复

使用道具 举报

55

主题

56

回帖

359

积分

中级会员

Rank: 3Rank: 3

积分
359
发表于 2021-2-17 10:29:09 | 显示全部楼层
转发了
回复

使用道具 举报

36

主题

33

回帖

217

积分

中级会员

Rank: 3Rank: 3

积分
217
发表于 2021-2-17 10:30:02 | 显示全部楼层
转发了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入家园

本版积分规则

QQ|Archiver|手机版|小黑屋|111升学论坛

GMT+8, 2024-9-20 06:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表