【深度学习】神经网络可视化工具,超全汇总!

神经网络可视化是指通过图形化的方式展示神经网络的结构、参数、输入、输出、中间结果等信息,可以帮助用户更好地神经网络的内部工作原理和特征提取过程,以优化神经网络模型。扩展阅读:神经网络学习到的是什么?  机器学习可视化技术概览(Python)

本文汇总了全网最为全面的26款神经网络可视化工具,可以帮助大家了解神经网络的结构组成、工作原理和性能表现,从而更好地进行模型调整和优化。也可以画出酷炫的模型图方便模型的展示。具体如下:

1. Net2Vis:是一款自动从Keras代码生成卷积神经网络的抽象可视化的工具。

地址:https://github.com/viscom-ulm/Net2Vis

# You can freely modify this file.
# However, you need to have a function that is named get_model and returns a Keras Model.
import json
import sys
import os
from keras.models import Sequential
from keras.layers import Conv2D, Dense, Dropout, Flatten, MaxPooling2D, AveragePooling2D


def get_model():
    num_classes = 25
    model = Sequential()


    model.add(Conv2D(filters=6, kernel_size=(3, 3), activation='relu', padding="same", input_shape=(32,32,1)))
    model.add(AveragePooling2D())


    model.add(Conv2D(filters=16, kernel_size=(3, 3), activation='relu',padding="same"))
    model.add(AveragePooling2D())


    model.add(Flatten())


    model.add(Dense(units=120, activation='relu'))


    model.add(Dense(units=84, activation='relu'))


    model.add(Dense(units=num_classes, activation = 'softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])


    return model

效果如下:

4d196b2ac6c951c42a89684cb7b11293.png

2. Visualkeras:是一个Python包,用于帮助可视化Keras(独立或包含在TensorFlow中)神经网络架构。它允许轻松地进行样式设置以适应大多数需求。目前,它支持分层样式架构生成,非常适合CNN(卷积神经网络),以及图形样式架构。

地址:https://github.com/paulgavrikov/visualkeras

效果如下:

import visualkerasmodel = ...visualkeras.layered_view(model).show() # display using your system viewervisualkeras.layered_view(model, to_file='output.png') # write to diskvisualkeras.layered_view(model, to_file='output.png').show() # write and showvisualkeras.layered_view(model)

0a8a74d8b25cdf4abf8d782a943fd481.png

3. draw_convnet:是一个用于绘制卷积神经网络结构图的Python脚本。它可以帮助您可视化卷积神经网络的结构,包括卷积层、池化层、全连接层等。该脚本是由GitHub用户gwding开发的,是一个开源项目,可以在GitHub上找到其源代码和使用说明。

地址:https://github.com/gwding/draw_convnet

效果如下:

b86efd7ca4e1da22d58a74c75c4c86a0.png

4. NN-SVG:有FCNN、AlexNet、LeNet三种类型。

地址:http://alexlenail.me/NN-SVG/AlexNet.html

FCNN 类型

8da9355039679ab40dbf45de647d2ba4.jpeg

AlexNet 类型

95a144f0f697c808e4380accecdf66d8.png

LeNet 类型:

bfce2d72c50ed9a22254be3ce41c8b64.png

5. PlotNeuralNet:用于绘制报告和演示文稿中的神经网络的LaTeX代码。查看示例可以了解它们的制作方式。

地址:https://github.com/HarisIqbal88/PlotNeuralNet

效果如下:

b6f586023e65c4c742b2a03d4748d994.pnga2e918eaa7845c814f5ffd55339e956e.png

6. TensorBoard:Graphs仪表板是用于检查TensorFlow模型的强大工具。

地址:https://www.tensorflow.org/tensorboard?hl=zh-cn

效果如下:

97812f2f0bfe528bb8d177f0f133c5a4.jpeg

7. Caffe:可以使用caffe/draw.py来绘制NetParameter protobuffer。

地址:https://github.com/BVLC/caffe

效果如下:

c55c663e1fa0a873b054d72abc44731a.png

8. Matlab

地址:https://www.mathworks.com/?s_tid=gn_logo

效果如下:

58ab9f53eab567bd4c007cadc9cf0ebb.png

9. Keras.js

地址:https://transcranial.github.io/keras-js/#/

效果如下:

49b6177906581602b47368d69987952c.png

10. keras-sequential-ascii:用于研究序列模型的架构和参数的Keras库

地址:https://github.com/stared/keras-sequential-ascii/

VGG 16 的网络结构如下:

92b7ea3fb4e53f241c8f6a0d4e4bd1b3.jpeg

11. Netron:可以可视化神经网络、深度学习和机器学习模型。Netron支持ONNX、TensorFlow Lite、Core ML、Keras、Caffe、Darknet、MXNet、PaddlePaddle、ncnn、MNN和TensorFlow.js。还支持实验性的PyTorch、TorchScript、TensorFlow、OpenVINO、RKNN、MediaPipe、ML.NET和scikit-learn。

地址:https://github.com/lutzroeder/Netron

效果如下:

87cff1d28d49592b9bcf934e981ae655.png

12. DotNet:这是一个简单的Python脚本,用于使用Python和Graphviz生成前馈神经网络的图片。

地址:https://github.com/martisak/dotnets

效果如下:

f3faac886d2b6d5cabea6538d5e5eabd.png

13.Graphviz:是一个开源的图可视化软件,它可以用抽象的图形和网络图来表示结构化信息。

地址:https://www.graphviz.org/

效果如下:

d947916816050dd311e4af792078e32b.png

14. Keras Visualization:keras.utils.vis_utils模块提供了绘制Keras模型(使用graphviz)的实用函数。

地址:https://keras.io/api/utils/model_plotting_utils/

效果如下:

658225ae5d35ba217ed162c63939cc73.png

15. Conx:Python第三方库 conx 可以使用 net.picture() 函数来实现具有激活函数网络的可视化,以生成SVG、PNG或PIL。

地址:https://conx.readthedocs.io/en/latest/index.html

效果如下:

d1e59194e350c878ead1204e9eb54558.png

16. ENNUI:致力于开发拖拽式神经网络可视化工具。

地址:https://math.mit.edu/ennui/

以下是一个LeNet-like 架构的可视化示例:

883ac71679edf80bd53cd583dae312f7.png

17. NNet

教程:https://beckmw.wordpress.com

R工具包示例及效果:

data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))

9f1a55d84ee89d9b79dc6b6a54024961.png

18. GraphCore:主要是展示神经网络中操作的可视化结果,但也包括了网络结构的内容,比如每层的网络参数等。

地址:https://www.graphcore.ai/posts/

下面展示了两个网络结构的可视化效果:

AlexNet

720829f9cc4a901f1c6d095953e0d5b0.jpeg

ResNet50

9d074bb7f6546260340c9ba5bba5ea98.jpeg

19. Neataptic:提供了非常灵活的神经网络可视化形式;神经元和突触可以通过一行代码进行删除。神经网络运行不需要固定的结构。允许通过神经进化(neuro-evolution)的方式为数据集调整网络结构的形状,并通过多线程来实现

地址:https://wagenaartje.github.io/neataptic/

效果如下:

9e7cc484bd9092857fa6154a956b8737.jpeg

20. TensorSpace:是一个由TensorFlow.js、Three.js和Tween.js构建的神经网络3D可视化框架。它提供Layer API以构建深度学习层、加载预训练模型,并在浏览器中生成3D可视化。通过它的API接口,可以更直观地可视化并理解任何由TensorFlow、Keras、TensorFlow.js等构建的预训练模型。

地址:https://tensorspace.org/index_zh.html

效果如下:

13f5da9db2de7b4ad932b745dfddb536.png

21. Netscope CNN Analyzer:一个基于网络的工具,用于可视化和分析卷积神经网络架构(或者从技术角度讲,任何有向无环图)。目前支持Caffe的prototxt格式。

地址:http://dgschwend.github.io/netscope/quickstart.html

效果如下:

dafa96cf8427aace2ecd0f564bbfff51.png

22. Monial:计算图的交互式表示法,左边是输入,右侧就是对应结构的可视化结果。

地址:https://github.com/mlajtos/moniel

效果如下:

9eafe5163514b2cd329e0ae2fd1ea822.png

23. Texample:可以通过 LaTex 来实现一个神经网络结构的可视化。

地址:https://texample.net/tikz/examples/neural-network/

LaTex 示例及效果图如下:

\documentclass{article}


\usepackage{tikz}
\begin{document}
\pagestyle{empty}


\def\layersep{2.5cm}


\begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep]
    \tikzstyle{every pin edge}=[<-,shorten <=1pt]
    \tikzstyle{neuron}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
    \tikzstyle{input neuron}=[neuron, fill=green!50];
    \tikzstyle{output neuron}=[neuron, fill=red!50];
    \tikzstyle{hidden neuron}=[neuron, fill=blue!50];
    \tikzstyle{annot} = [text width=4em, text centered]


    % Draw the input layer nodes
    \foreach \name / \y in {1,...,4}
    % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4}
        \node[input neuron, pin=left:Input \#\y] (I-\name) at (0,-\y) {};


    % Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden neuron] (H-\name) at (\layersep,-\y cm) {};


    % Draw the output layer node
    \node[output neuron,pin={[pin edge={->}]right:Output}, right of=H-3] (O) {};


    % Connect every node in the input layer with every node in the
    % hidden layer.
    \foreach \source in {1,...,4}
        \foreach \dest in {1,...,5}
            \path (I-\source) edge (H-\dest);


    % Connect every node in the hidden layer with the output layer
    \foreach \source in {1,...,5}
        \path (H-\source) edge (O);


    % Annotate the layers
    \node[annot,above of=H-1, node distance=1cm] (hl) {Hidden layer};
    \node[annot,left of=hl] {Input layer};
    \node[annot,right of=hl] {Output layer};
\end{tikzpicture}
% End of code
\end{document}

40c40f193e48b14dea2d7f353edffeb9.png

24. Quiver:Keras 的一款交互式卷积神经网络特征可视化的一个工具。

地址:https://github.com/keplr-io/quiver

效果如下:

f6a41cefd442c445c77bc2dfbf39ec8f.gif

25. cnn-explainer:通过加载预训练模型以进行CNN可视化,只需要浏览器就可了解CNN的预测过程!

地址:https://poloclub.github.io/cnn-explainer/

效果如下:

3f2878cfebe6cad3cd49d4adec7bdf77.gif

26. ML Visuals :包含神经网络的图形和模板,可以重复使用和自定义用于神经网络结构的展示。

地址:https://github.com/dair-ai/ml-visuals

效果如下:

25510d040e2c6fc992cdb00bd830ec12.png

eba2d913b4affcdf293ea4062fb09456.png

 
 

7f71861d0a34b44e4ef7f092e0c5046a.jpeg

 
 
 
 
 
 
 
 
 
 

往期精彩回顾

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用[1]:CSPNet: A New Backbone that can Enhance Learning Capability of CNN[^1]。引用:yolox在backbone部分引入的focus网络,类似于pooling的策略,但是他没有像maxpooling一样把小的feature丢掉,而是隔一个位置取一个值后堆叠到channel中,因为我们知道通道数越高,表征能力越强。再次我们看一下作者用silu替换了relu,silu的优势在于它是全局可导的,不存在不可导的0点。另外,在backbone部分,我们可以得到的启示就是,怎样将小的conv+bn+silu组成的基本卷积结构构造成不同类型的残差结构。另外,在head部分,作者认为yolov3中的类别和坐标放到一个1∗1卷积得到,会相互影响。因此把它分成两个分支[^2]。 有许多卷积神经网络可视化工具可用于可视化网络结构和特征。以下是一些常用的工具: 1. TensorBoard:TensorBoard是TensorFlow的官方可视化工具,它可以用于可视化网络结构、训练过程和特征。通过使用TensorBoard的`tf.summary.FileWriter`和`tf.summary.histogram`等函数,可以将网络结构和特征保存为TensorBoard可读取的格式,并在浏览器中进行可视化展示。 2. Netron:Netron是一个开源的神经网络模型可视化工具,支持多种深度学习框架的模型可视化,包括TensorFlow、PyTorch、Caffe等。它可以直接加载模型文件,并以形方式显示网络结构,方便用户进行可视化分析。 3. PyTorch的torchsummary和torchviz:PyTorch提供了torchsummary和torchviz两个库,可以用于可视化PyTorch模型的网络结构。torchsummary可以打印出模型的层次结构和参数数量,而torchviz可以生成模型的计算。 4. Keras的plot_model:Keras提供了plot_model函数,可以将Keras模型保存为像文件,以可视化网络结构。该函数可以将模型的层次结构、输入和输出形状等信息绘制成形,方便用户进行可视化分析。 这些工具可以帮助您更好地理解和分析卷积神经网络的结构和特征。您可以根据自己的需求选择适合的工具进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值