基于Python的神经网络模型结构框架可视化绘图简便方法

简介: 基于Python的神经网络模型结构框架可视化绘图简便方法

  最近需要进行神经网络的可视化。查阅多种方法后,看到很多方法都比较麻烦,例如单纯利用graphviz模块,就需要手动用DOT语言进行图片描述,比较花时间;最终,发现利用第三方的ann_visualizer模块,可以实现对已有神经网络的直接可视化,过程较为方便。

  相关环境的版本信息:

  Anaconda Navigator 1.10.0

  Python 3.8.5

  首先,下载与安装必要的模块ann_visualizer。打开Anaconda Prompt (Soft)

  在弹出的界面中输入:

pip install ann_visualizer

  即可完成ann_visualizer模块的安装。

  接下来,我们就可以借助以下仅仅一句代码对神经网络模型进行可视化了。

ann_viz(DNNModel,view=True,filename='G:/CropYield/02_CodeAndMap/01_SavedPicture/MyANN.gv',title='ANN')

  其中,DNNModel就是我们已经建立好的神经网络模型,任意神经网络模型均可——可以是一个简单的浅层人工神经网络,也可以是一个相对复杂的全连接深度神经网络view表示是否在代码执行后直接显示绘图结果;filename是绘图结果的保存位置,需要以.gv结尾;title就是神经网络图片的名称。

  在这里,我就直接以这篇博客1https://blog.csdn.net/zhebushibiaoshifu/article/details/114016531)中介绍并建立的深度神经网络加以可视化。

  第一次运行代码时发现,出现以下报错:

  报错提示我没有安装graphviz模块,但其实之前在进行随机森林决策树的可视化(也就是这篇博客2)时,早已经将这一模块安装过了,并且当时用到graphviz这一模块的代码也没有报错。通过查阅,发现这里需要重新安装一下python-graphviz这个新的模块。因此我们打开Anaconda Prompt (Soft),输入代码:

conda install python-graphviz

  如下图所示:

  安装之后这里就不报错啦~

  结果紧接着又报出了新的错误,说我的keras模块没有安装:

  这就不对了,明明在进行深度神经网络构建时都没有出现问题,甚至在这一句报错的下方连深度神经网络的误差绘制曲线都能显示(误差曲线的精度的确很差,大家不用在意~因为这里我们仅仅是做一个示范,所以Epoch次数就调得很小),说明keras模块应该是没问题的。

  随后考虑到,这里报错的keras是在ann_visualizer的文件环境下,可能是环境不同导致的。打开Anaconda Navigator,在base (root)环境下确实找不到keras

  那么我这里就图方便,直接在base (root)环境下再安装一个keras。安装方法同上,输入代码即可:

pip install keras

  然后这里就不报错啦~

  接下来,经过多次尝试发现,这一方法进行神经网络可视化时,一是不能存在正则化层与BatchNormalization层;二是LeakyReLU层与Dropout层的总数量不能过多,否则绘图结果会出现问题——这就显得这一可视化方法稍微有点鸡肋了,但是其对于基本的神经网络绘图而言其实也已经很不错了。因此,我就将这篇博客1中的神经网络上述对应的层删除或注释掉。

  如下图,首先,将当初我的代码对应的LeakyReLU层与Dropout层注释掉:

  然后执行代码,即可进行神经网络的可视化。且绘制出的图将会自动打开在PDF阅读软件中,如下图(版面有限,这里就只是绘图结果的一部分)。

  还是很不错的~我们还可以直接将其转换为图片格式,看起来就更直观了:

  如果再取消Dropout层的注释,即绘图时加上Dropout层,也还是很不错的:

  如果我们再加上LeakyReLU层,就成了这个乱七八糟、不太正确的样子(原图实在太大了,就只给大家截取图片的一部分):

  可以看到,这样的话就有些问题了。

  最后,我们看一下这个ann_visualizer第三方库的源代码,可以看到该库支持绘图的不同种类神经网络层;如果大家的神经网络包含这些层,就可以用ann_visualizer这一第三方库进行绘图。

  此外,如果需要在MATLAB中实现神经网络构建与简单的可视化,大家还可以查看这篇博客3



相关文章
|
11月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
762 0
|
数据可视化 搜索推荐 大数据
基于python大数据的北京旅游可视化及分析系统
本文深入探讨智慧旅游系统的背景、意义及研究现状,分析其在旅游业中的作用与发展潜力,介绍平台架构、技术创新、数据挖掘与服务优化等核心内容,并展示系统实现界面。
|
11月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
12月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
690 2
|
12月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
296 8
|
数据可视化 数据挖掘 大数据
基于python大数据的水文数据分析可视化系统
本研究针对水文数据分析中的整合难、分析单一和可视化不足等问题,提出构建基于Python的水文数据分析可视化系统。通过整合多源数据,结合大数据、云计算与人工智能技术,实现水文数据的高效处理、深度挖掘与直观展示,为水资源管理、防洪减灾和生态保护提供科学决策支持,具有重要的应用价值和社会意义。
|
机器学习/深度学习 搜索推荐 数据可视化
基于python大数据的音乐可视化与推荐系统
本研究基于Python实现音乐数据采集、清洗、分析与可视化,并结合协同过滤算法构建个性化推荐系统。通过Echarts展示音乐热度及用户偏好,提升用户体验,助力音乐产业智能化发展。
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
324 1

推荐镜像

更多