如何在Keras中可视化深度学习神经网络模型
Keras Python深度学习库提供了可视化和更好地理解神经网络模型的工具。
在本教程中,你将确切了解如何在Keras中总结和可视化深度学习模型。
完成本教程后,你将了解:
- 如何创建深度学习模型的文本摘要。
- 如何创建深度学习模型的图表。
- 在Keras中开发深度学习模型时的最佳实践提示。
我们开始吧。
教程概述
本教程分为4个部分,它们是:
- 示例模型。
- 总结模型。
- 可视化模型。
- 最佳实践提示。
示例模型
我们可以从在Keras中定义一个简单的多层感知器模型开始,我们可以将其用作总结和可视化的主题。
我们将定义的模型有一个输入变量,一个具有两个神经元的隐藏层,以及一个具有一个二进制输出的输出层。
例如:
[1 input] -> [2 neurons] -> [1 output]
如果你是KERS或深度学习的新手,请参阅此Keras分步教程。
下面提供了此网络的代码清单。
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'))
总结模型
凯拉斯提供了一种总结模型的方法。
摘要为文本,包括有关以下内容的信息:
- 模型中的层及其顺序。
- 每层的输出形状。
- 每层中的参数(权重)数。
- 模型中的参数(权重)总数。
可以通过在模型上调用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()函数将创建网络图。此函数接受一些有用的参数:
- model:(必选)要打印的模型。
- to_file:(必选)要将绘图保存到的文件的名称。
- show_shapes:(可选,默认为false)是否显示每个层的输出形状。
- 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中创建你的神经网络模型的摘要和曲线图。
我推荐这样做有几个原因:
- 确认图层顺序。使用顺序API很容易以错误的顺序添加层,或者使用函数式API很容易将它们错误地连接在一起。曲线图可以帮助你确认模型是否按预期方式连接。
- 确认每一层的输出形状。在定义像卷积和递归神经网络这样的复杂网络的输入数据的形状时,通常会出现问题。摘要和绘图可以帮助你确认网络的输入形状是否符合你的预期。
- 确认参数。一些网络配置可以使用少得多的参数,例如在编解码器递归神经网络中使用时间分布的包裹致密层。查看摘要可以帮助发现使用比预期多得多的参数的情况。
进一步阅读
如果你想深入了解,本节提供了更多关于该主题的资源。
摘要
在本教程中,你了解了如何在Keras中总结和可视化深度学习模型。
具体地说,你了解到:
- 如何创建深度学习模型的文本摘要。
- 如何创建深度学习模型的图表。
- 在Keras中开发深度学习模型时的最佳实践提示。