可视化Keras深度学习神经网络模型

为了使开发者更好的理解其开发的神经网络模型,Keras Python深度学习库提供了可视化神经网络模型的工具。这对于产品演示和讲解是非常有用的

在本文,你会学到如何在Keras中总结和可视化深度学习模型。

读完本文后,你将知道:

如何创建你的深度学习模型的文本摘要。

如何构建你的深度学习模型的图形。

在Keras开发深度学习模型的最佳实践技巧。

教程概述:

本教程分为4个部分:

1.示例模型。

2.总结模型。

3.可视化模型。

4.最佳实践经验。

示例模型:

我们可以通过在Keras中定义一个简单的多层Perceptron的模型来开始,我们可以使用它作为切入点,进而进入可视化的主题。

我们将要定义的模型有一个输入变量,一个带有两个神经元的隐藏层,一个带有一个二进制输出的输出层。

1

[1 input] -> [2 neurons] -> [1 output]

下面提供了该网络的代码清单:

from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(2, input_dim=1, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

总结模型:

Keras提供了一个总结模型的方法。

摘要是文本性的,包括以下信息:

1.模型中的图层和顺序。

2.每层的输出形状。

3.每层中的参数(权重)的数量。

4.模型中参数(权重)的总数。

网络模型的摘要生成可以通过调用模型上的summary()函数来创建,该函数返回一个可以打印的字符串。

以下是更新后的示例,打印创建的网络模型的摘要。

运行此示例可以打印下表:

from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(2, input_dim=1, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
print(model.summary())

我们可以清楚地看到每个图层的输出形状和权重数量。

_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
dense_1 (Dense)              (None, 2)                 4
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 3
=================================================================
Total params: 7
Trainable params: 7
Non-trainable params: 0
_________________________________________________________________

可视化模型:

网络模型的摘要对于简单的模型是有用的,但对于具有多个输入或输出的模型可能会造成混淆。

Keras还提供了一个函数来创建神经网络模型的图,可以使更复杂的模型更容易理解。

在Keras中plot_model()的功能是创建网络模型图的函数。使用这个函数你需要了解一些有用的参数:

1.model:(必填)你希望绘制的模型。

2.to_file:(必需)要将绘图保存到的文件的名称。

3.show_shapes :(可选,默认为False)是否显示每个图层的输出形状。

4.show_layer_names :(可选,默认为True)是否显示每个图层的名称。

下面是绘制创建模型的更新示例。

请注意,该示例假定你已经安装了graphviz图库Python接口。(如果你想要使用该功能你可以去下载安装。)

from keras.models import Sequential
from keras.layers import Dense
from keras.utils.vis_utils import plot_model
model = Sequential()
model.add(Dense(2, input_dim=1, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True)

运行示例用创建的模型的图形创建文件model_plot.png

实践经验:

我通常建议在Keras中创建一个神经网络模型的总结和图形。

我推荐这个有几个原因:

1.确认图层顺序。将顺序API错误地添加图层与功能性API错误地连接在一起这是很容易犯的错误。图形可以帮助你确认模型是否按照你的预期方式连接。

2.确认每个图层的输出形状。定义复杂网络(如卷积和递归神经网络)的输入数据的形状是很常见的。模型摘要和图形可以帮助你确认网络的输入形状是否符合你的要求。

3.确认参数。一些网络配置可以使用很少的参数,例如在编码器 -
解码器递归神经网络中使用TimeDistributed缠绕的密集层。查看摘要可以帮助发现使用比预期更多的参数的情况。

进一步阅读:

如果你想深入了解,你可以查看以下的链接。

1.模型可视化Keras
API

2.Graphviz
- 图形可视化软件

3.Graphviz简单的Python界面

作者信息


Dr. Jason Brownlee 是一名机器学习从业者,学术研究人员,致力于帮助开发人员从入门到精通机器学习。

本文由北邮@爱可可-爱生活老师推荐,阿里云组织翻译。

文章原标题《How to Visualize a Deep Learning Neural Network Model in Keras》

作者:Dr.Jason Brownlee译者:虎说八道

文章为简译,更为详细内容,请查看原文

时间: 2024-10-25 14:14:07

可视化Keras深度学习神经网络模型的相关文章

独家 | 教你在R中使用Keras和TensorFlow构建深度学习模型

引言: 在R和Python之间如何进行选择一直是一个热议的话题.机器学习世界也被不同语言偏好所划分.但是随着深度学习的盛行,天平逐渐向Python倾斜,因为截至目前为止Python具有大量R所没有的深度学习的资源库和框架. 我个人从R转到Python是因为我想更加深入机器学习的领域,而仅仅使用R的话,这(在之前)是几乎不可能实现的事情.不过也仅此而已! 随着Keras在R中的实现,语言选择的斗争又重新回到舞台中央.Python几乎已经慢慢变成深度学习建模的默认语言,但是随着在R中以TensorF

GitHub 上 57 款最流行的开源深度学习项目

GitHub 上 57 款最流行的开源深度学习项目 本文整理了 GitHub 上最流行的 57 款深度学习项目(按 stars 排名).最后更新:2016.08.09 1.TensorFlow 使用数据流图计算可扩展机器学习问题 TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow 的表现比第一代的 DistBelief 快了2倍. TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用 TensorFlow.

R语言中不能进行深度学习?

更多深度文章,请关注:https://yq.aliyun.com/cloud 众所周知,R语言是统计分析最好用的语言.但在Keras和TensorFlow的帮助下,R语言也可以进行深度学习了. 在机器学习的语言的选择上,R和Python之间选择一直是一个有争议的话题.但随着深度学习的爆炸性增长,越来越多的人选择了Python,因为它有一个很大的深度学习库和框架,而R却没有(直到现在). 但是我就是想使用R语言进入深度学习空间,所以我就从Python领域转入到了R领域,继续我的深度学习的研究了.这

用深度学习每次得到的结果都不一样,怎么办?

神经网络算法利用了随机性,比如初始化随机权重,因此用同样的数据训练同一个网络会得到不同的结果. 初学者可能会有些懵圈,因为算法表现得不太稳定.但实际上它们就是这么设计的.随机初始化可以让网络通过学习,得到一个所学函数的很好的近似. 然而, 有时候用同样的数据训练同一个网络,你需要每次都得到完全相同的结果.例如在教学和产品上. 在这个教程中,你会学到怎样设置随机数生成器,才能每次用同样的数据训练同一网络时,都能得到同样的结果. 我们开始. 教程概览 这个教程分为六部分: 为啥我每次得到的结果都不一

教你用深度学习LSTM网络预测流行音乐趋势(附代码)

一. LSTM网络原理 1.1 要点介绍 LSTM网络用来处理带"序列"(sequence)性质的数据.比如时间序列的数据,像每天的股价走势情况,机械振动信号的时域波形,以及类似于自然语言这种本身带有顺序性质的由有序单词组合的数据.  LSTM本身不是一个独立存在的网络结构,只是整个神经网络的一部分,即由LSTM结构取代原始网络中的隐层单元部分.  LSTM网络具有"记忆性".其原因在于不同"时间点"之间的网络存在连接,而不是单个时间点处的网络存

中国人工智能学会通讯——深度学习与视觉计算 1.3 计算机视觉领域利用深度学习可能带来的未来研究方向

1.3 计算机视觉领域利用深度学习可能带来的未来研究方向 第一个,深度图像分析.目前基于深度 学习的图像算法在实验数据库上效果还是 不错的,但是远远不能够满足实际大规模 应用需求,需要进一步的提升算法性能从 而能够转化相应的实际应用.比如这个基 于图片的应用,可以估计性别和年龄,但 是其实经常会犯错,因此需要进一步提升 深度图像分析的性能. 第二个,深度视频分析.视频分析牵扯 到大量的数据和计算量,所以做起来更加 麻烦.当前深度视频分析还处于起步的阶 段,然而视频应用非常广泛,比如人机交互. 智

利用深度学习开发老板探测器,再也不担心刷着微博一回头突然看到老板了

如果上班的时候想放松一下,或者直说想偷偷懒,看点和工作无关的网页,这时候万一老板突然出现在背后,会不会感到很难堪呢? 有的浏览器设置了boss按键,手快的人还可以切换屏幕,不过总会显得不自然,而且经常搞的手忙脚乱的. 一个日本程序员决定自己动手,编写一个一劳永逸的办法,我们来看看他是怎么实现的吧~ 思路很直接:用网络摄像头自动识别在工位通道走过的人脸,如果确认是老板的话,就用一张写满了代码的截图覆盖到整个屏幕上. 整个工程中应用了Keras深度学习框架来建立识别人脸的神经网络,和一个网络摄像头用

《白话深度学习与TensorFlow》——1.5 小结

1.5 小结 一言以蔽之,机器学习就是人类定义一定的计算机算法,让计算机根据输入的样本和一些人类的干预来总结并归纳其特征与特点,并用这些特征和特点与一定的学习目标形成映射关系,进而自动化地做出相应反应的过程.这个反应可能是做出相应的标记或判断,也可能是输出一段内容--图片.程序代码.文本.声音,而机器自己学到的内容我们可以描述为一个函数.一段程序.一组策略等相对复杂的关系描述.在我看来,机器学习是大数据的一个子范畴.因为凡是基于对客观事物的量化认知的科学都是数据科学的范畴,也就是广义的大数据的范

【前沿】TensorFlow Pytorch Keras代码实现深度学习大神Hinton NIPS2017 Capsule论文

10月26日,深度学习元老Hinton的NIPS2017 Capsule论文<Dynamic Routing Between Capsules>终于在arxiv上发表.今天相关关于这篇论文的TensorFlow\Pytorch\Keras实现相继开源出来,让我们来看下. 论文地址:https://arxiv.org/pdf/1710.09829.pdf Capsule 是一组神经元,其活动向量(activity vector)表示特定实体类型的实例化参数,如对象或对象部分.我们使用活动向量的长