如何画出漂亮的神经网络图?

仅作分享,不代表本公众号立场,侵权联系删除

转载于:Github

https://github.com/ashishpatel26/Tools-to-Design-or-Visualize-Architecture-of-Neural-Network

1. draw_convnet

一个用于画卷积神经网络的Python脚本

  • https://github.com/gwding/draw_convnet

2. NNSVG

  • http://alexlenail.me/NN-SVG/LeNet.html

3. PlotNeuralNet

  • https://github.com/HarisIqbal88/PlotNeuralNet

使用latex 来展示神经网络

4. Tensorboard

  • https://www.tensorflow.org/tensorboard/graphs

5. Caffe

  • https://github.com/BVLC/caffe/blob/master/python/caffe/draw.py

使用Caffe/draw.py

6.Matlab

  • http://www.mathworks.com/help/nnet/ref/view.html

7.Keras.js

  • https://transcranial.github.io/keras-js/#/inception-v3

8. DotNet

  • https://github.com/martisak/dotnets

9.  Graphviz

  • http://www.graphviz.org/

10. ConX

  • https://conx.readthedocs.io/en/latest/index.html

11. ENNUI 

  • https://math.mit.edu/ennui/

12.  Neataptic

  • https://wagenaartje.github.io/neataptic/

end

### 使用Python绘制美观的神经网络结构图 对于希望创建既专业又美观的神经网络结构图的需求,可以采用多种方式实现。其中一种高效的方式是通过编程语言Python及其丰富的库支持完成。 #### 方法一:使用`matplotlib`和自定义脚本 这种方法允许高度定制化的设计,适合那些熟悉Python编程的人士。下面是一个简单的例子展示如何构建一个基础版本的神经网络图表: ```python import matplotlib.pyplot as plt from math import ceil def draw_neural_net(ax, layer_sizes): v_spacing = (ax.get_ylim()[1]-ax.get_ylim()[0])/float(max(layer_sizes)) h_spacing = (ax.get_xlim()[1]-ax.get_xlim()[0])/(len(layer_sizes)-1) # Nodes for n, layer_size in enumerate(layer_sizes): layer_top = v_spacing*(layer_size - 1)/2. + ax.get_ylim()[0] for m in range(layer_size): circle = plt.Circle((n*h_spacing + .5, layer_top - m*v_spacing), 0.025, color='w', ec='k', zorder=4) ax.add_artist(circle) # Edges for n, (layer_size_a, layer_size_b) in enumerate(zip(layer_sizes[:-1], layer_sizes[1:])): layer_top_a = v_spacing*(layer_size_a - 1)/2. + ax.get_ylim()[0] layer_top_b = v_spacing*(layer_size_b - 1)/2. + ax.get_ylim()[0] for m in range(layer_size_a): for o in range(layer_size_b): line = plt.Line2D([n*h_spacing + .5, (n + 1)*h_spacing + .5], [layer_top_a - m*v_spacing, layer_top_b - o*v_spacing], c='k') ax.add_artist(line) fig = plt.figure(figsize=(12, 12)) ax = fig.gca() ax.axis('off') draw_neural_net(ax=ax, layer_sizes=[4, 7, 6]) plt.show() ``` 这段代码展示了如何手动设置节点的位置以及边之间的连接关系,从而形成一个多层感知器(MLP)样式的图形[^1]。 #### 方法二:借助专门的绘图包——PlotNeuralNet 另一个更简便的选择是使用名为`PlotNeuralNet`的开源项目。此工具专为简化神经网络可视化而设计,提供了直观易用的功能接口。安装后只需按照官方文档指导选取合适的组件组合即可快速搭建所需的架构模型[^2]。 #### 方法三:运用NetworkX库 除了上述两种途径外,还可以考虑应用Graphviz风格的NetworkX库来呈现更加复杂的深层神经网络(DNN),特别是当涉及到非标准拓扑结构时尤为适用。具体来说,可以通过定义各层次间的链接模式来自动生成相应的布局视图[^3]。 #### 方法四:Microsoft Visio或其他矢量编辑软件 如果倾向于所见即所得(WYSIWYG)类型的交互环境,则可以选择像微软Visio这样的专用制图应用程序。尽管这类解决方案可能不如编程手段灵活多变,但对于不具备深厚编码背景的人来说却是十分友好的选项之一[^4]。 无论选用哪种技术路线,最终目标都是为了能够清晰表达各个组成部分间的关系特性,进而辅助理解算法原理或是向他人传达设计理念。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值