如何在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中开发深度学习模型时的最佳实践提示。

00

Python

发表评论

电子邮件地址不会被公开。 必填项已用*标注

什么阻碍了你实现迈入机器学习领域的目标?

什么阻碍了你实现迈入机器学习领域的目标?

2020-04-22 机器学习

如果你在为进入机器学习领域而挣扎,感觉到有什么东西阻止了自己的开始,那么你应该看看这篇文章。 在这篇文章中,我们会讨论阻止进入机器学习领域的自我限制的信念,让你明白面临的问题。 几乎总是一种自我限制的信念阻碍了你们的进步。 也许你会在一个或多个这样的信念中看到自己。如果是这样的话, [......]

了解详情

R语言机器学习迷你课程

R语言机器学习迷你课程

2020-08-12 机器学习

在这个迷你课程中,你将发现如何开始,构建精确的模型,并自信地完成在14天内使用R预测建模机器学习项目。 这是一个重要而重要的文章。你可能想把它书签。 了解如何准备数据,拟合机器学习模型,并用我的新书评估他们在r上的预测,包括14步教程、3个项目和完整源代码。 我们开始吧。 [......]

了解详情

关于机器学习的几点思考

关于机器学习的几点思考

2020-04-26 机器学习

机器学习是一个大的、跨学科的研究领域。 你可以通过机器学习获得令人印象深刻的结果,并找到非常具有挑战性的问题的解决方案。但这只是更广泛的机器学习领域的一小部分,通常被称为预测建模或预测分析。 在这篇文章中,你将发现如何改变你对机器学习的思考方式,以便更好地为你提供机器学习实践者的服务。 [......]

了解详情

找到你的机器学习部落

找到你的机器学习部落

2020-04-26 机器学习

机器学习是一个充满算法和数据的迷人而强大的研究领域。 问题是,有这么多不同类型的人对机器学习感兴趣,每个人都有不同的需求。重要的是要了解你想要从机器学习中得到什么,并根据这些需求调整你的自学。 如果你不这样做,你很容易就会陷入困境,迷失方向,失去兴趣,得不到你想要的东西。 找到 [......]

了解详情

应用机器学习过程

应用机器学习过程

2020-04-26 机器学习

随着时间的推移,在处理应用机器学习问题时,你会开发出一种模式或流程,以快速获得良好的正常结果。 一旦开发完成,你就可以在一个又一个项目上反复使用此过程。你的流程越健壮、越发达,你就能越快地获得可靠的结果。 在这篇文章中,我想与你分享我解决机器学习问题的过程框架。 你可以将其用作下一 [......]

了解详情