可视化Keras深度学习神经网络模型
姓名:卓振国 学号:16040510011
转载自http://www.jianshu.com/p/089302461a6b
【嵌牛导读】:为了使开发者更好的理解其开发的神经网络模型,Keras Python深度学习库提供了可视化神经网络模型的工具。
【嵌牛鼻子】:神经网络模型
【嵌牛提问】:如何构建可视化神经网络模型?
【嵌牛正文】:为了使开发者更好的理解其开发的神经网络模型,Keras Python深度学习库提供了可视化神经网络模型的工具。这对于产品演示和讲解是非常有用的
在本文,你会学到如何在Keras中总结和可视化深度学习模型。
读完本文后,你将知道:
如何创建你的深度学习模型的文本摘要。
如何构建你的深度学习模型的图形。
在Keras开发深度学习模型的最佳实践技巧。
教程概述:
本教程分为4个部分:
1.示例模型。
2.总结模型。
3.可视化模型。
4.最佳实践经验。
示例模型:
我们可以通过在Keras中定义一个简单的多层Perceptron的模型来开始,我们可以使用它作为切入点,进而进入可视化的主题。
我们将要定义的模型有一个输入变量,一个带有两个神经元的隐藏层,一个带有一个二进制输出的输出层。
1[1 input] -> [2 neurons] -> [1 output]
下面提供了该网络的代码清单:
总结模型:
Keras提供了一个总结模型的方法。
摘要是文本性的,包括以下信息:
1.模型中的图层和顺序。
2.每层的输出形状。
3.每层中的参数(权重)的数量。
4.模型中参数(权重)的总数。
网络模型的摘要生成可以通过调用模型上的summary()函数来创建,该函数返回一个可以打印的字符串。
以下是更新后的示例,打印创建的网络模型的摘要。
运行此示例可以打印下表:
我们可以清楚地看到每个图层的输出形状和权重数量。
可视化模型:
网络模型的摘要对于简单的模型是有用的,但对于具有多个输入或输出的模型可能会造成混淆。
Keras还提供了一个函数来创建神经网络模型的图,可以使更复杂的模型更容易理解。
在Keras中plot_model()的功能是创建网络模型图的函数。使用这个函数你需要了解一些有用的参数:
1.model:(必填)你希望绘制的模型。
2.to_file:(必需)要将绘图保存到的文件的名称。
3.show_shapes :(可选,默认为False)是否显示每个图层的输出形状。
4.show_layer_names :(可选,默认为True)是否显示每个图层的名称。
下面是绘制创建模型的更新示例。
请注意,该示例假定你已经安装了graphviz图库和Python接口。(如果你想要使用该功能你可以去下载安装。
运行示例用创建的模型的图形创建文件model_plot.png:
实践经验:
我通常建议在Keras中创建一个神经网络模型的总结和图形。
我推荐这个有几个原因:
1.确认图层顺序。将顺序API错误地添加图层与功能性API错误地连接在一起这是很容易犯的错误。图形可以帮助你确认模型是否按照你的预期方式连接。
2.确认每个图层的输出形状。定义复杂网络(如卷积和递归神经网络)的输入数据的形状是很常见的。模型摘要和图形可以帮助你确认网络的输入形状是否符合你的要求。
3.确认参数。一些网络配置可以使用很少的参数,例如在编码器-解码器递归神经网络中使用TimeDistributed缠绕的密集层。查看摘要可以帮助发现使用比预期更多的参数的情况。