原文: https://machinelearningmastery.com/visualize-deep-learning-neural-network-model-keras/
Keras Python 深度学习库提供了可视化和更好地理解您的神经网络模型的工具。
在本教程中,您将发现如何在 Keras 中总结和可视化您的深度学习模型。
完成本教程后,您将了解:
- 如何创建深度学习模型的文本摘要。
- 如何创建深度学习模型的图形图。
- 在 Keras 开发深度学习模型时的最佳实践技巧。
让我们开始吧。
如何在 Keras 中可视化深度学习神经网络模型 照片由 Ed Dunens ,保留一些权利。
本教程分为 4 个部分;他们是:
- 示例模型
- 总结模型
- 可视化模型
- 最佳实践技巧
我们可以从 Keras 中定义一个简单的多层感知机模型开始,我们可以将其用作摘要和可视化的主题。
我们将定义的模型有一个输入变量,一个带有两个神经元的隐藏层,以及一个带有一个二进制输出的输出层。
例如:
[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 提供了一种总结模型的方法。
摘要是文本性的,包括以下信息:
- 层和它们在模型中的顺序。
- 每层的输出形状。
- 每层中的参数(权重)数。
- 模型中的参数(权重)总数。
可以通过调用模型上的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()
功能将创建您的网络图。这个函数有一些有用的参数:
- _ 型号 _ :(必填)您想要绘制的模型。
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 错误地将它们连接在一起很容易。图表图可以帮助您确认模型是否按照您预期的方式连接。
- 确认每层的输出形状。在定义复杂网络(如卷积和递归神经网络)的输入数据形状时,常常会遇到问题。摘要和图表可以帮助您确认网络的输入形状是否符合您的预期。
- 确认参数。一些网络配置可以使用更少的参数,例如在编解码器递归神经网络中使用
TimeDistributed
包裹的密集层。查看摘要可以帮助发现使用远远超出预期的参数的情况。
如果您希望深入了解,本节将提供有关该主题的更多资源。
在本教程中,您了解了如何在 Keras 中总结和可视化您的深度学习模型。
具体来说,你学到了:
- 如何创建深度学习模型的文本摘要。
- 如何创建深度学习模型的图形图。
- 在 Keras 开发深度学习模型时的最佳实践技巧。
你有任何问题吗? 在下面的评论中提出您的问题,我会尽力回答。