Keras - 深度学习
Keras 提供了一个完整的框架来创建任何类型的神经网络。Keras 既创新又易于学习。它支持从简单的神经网络到非常大且复杂的神经网络模型。让我们在本章中了解 Keras 框架的架构以及 Keras 如何帮助深度学习。
Keras 的架构
Keras API 可分为三个主要类别 −
- 模型
- 层
- 核心模块
在 Keras 中,每个 ANN 都由 Keras 模型 表示。反过来,每个 Keras 模型都是由 Keras 层 组成的,代表 ANN 层,如输入层、隐藏层、输出层、卷积层、池化层等,Keras 模型和层访问 Keras 模块,用于激活函数、损失函数、正则化函数等。使用 Keras 模型、Keras 层和 Keras 模块,任何 ANN 算法(CNN、RNN 等)都可以以简单有效的方式表示。
下图描述了模型、层和核心模块之间的关系 −
让我们看看 Keras 模型、Keras 层和 Keras 模块的概述。
模型
Keras 模型有两种类型,如下所述−
顺序模型 − 顺序模型基本上是 Keras 层的线性组合。顺序模型简单、最小,并且能够表示几乎所有可用的神经网络。
一个简单的顺序模型如下−
from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential() model.add(Dense(512, activation = 'relu', input_shape = (784,)))
其中,
第 1 行从 Keras 模型导入 Sequential 模型
第 2 行导入 Dense 层和 Activation 模块
第 4 行使用 Sequential API 创建一个新的顺序模型
第 5 行添加一个带有 relu 激活(使用 Activation 模块)功能的密集层(Dense API)。
Sequential 模型公开 Model 类以创建自定义模型。我们可以使用子类化概念来创建自己的复杂模型。
功能 API −函数式 API 主要用于创建复杂模型。
层
Keras 模型中的每个 Keras 层都代表实际提出的神经网络模型中的相应层(输入层、隐藏层和输出层)。Keras 提供了许多预构建层,因此可以轻松创建任何复杂的神经网络。下面列出了一些重要的 Keras 层,
- 核心层
- 卷积层
- 池化层
- 循环层
使用顺序模型表示神经网络模型的简单 Python 代码如下 −
from keras.models import Sequential from keras.layers import Dense, Activation, Dropout model = Sequential() model.add(Dense(512, activation = 'relu', input_shape = (784,))) model.add(Dropout(0.2)) model.add(Dense(512, activation = 'relu')) model.add(Dropout(0.2)) model.add(Dense(num_classes, activation = 'softmax'))
其中,
第 1 行从 Keras 模型导入 Sequential 模型
第 2 行导入 Dense 层和 Activation 模块
第 4 行使用 Sequential API 创建新的顺序模型
第 5 行添加一个具有 relu 激活(使用 Activation 模块)功能的密集层(Dense API)。
第 6 行添加一个 dropout 层(Dropout API)来处理过度拟合。
第 7 行添加另一个具有 relu 激活的密集层(Dense API) (使用激活模块)函数。
第 8 行添加了另一个 dropout 层(Dropout API)来处理过度拟合。
第 9 行添加了带有 softmax 激活(使用激活模块)函数的最终密集层(Dense API)。
Keras 还提供了创建我们自己的自定义层的选项。可以通过对 Keras.Layer 类进行子类化来创建自定义层,它类似于对 Keras 模型进行子类化。
核心模块
Keras 还提供了许多内置的神经网络相关函数来正确创建 Keras 模型和 Keras 层。部分函数如下 −
激活模块 −激活函数是 ANN 中的一个重要概念,激活模块提供了许多激活函数,如 softmax、relu 等,
损失模块 − 损失模块提供损失函数,如 mean_squared_error、mean_absolute_error、poisson 等,
优化器模块 − 优化器模块提供优化器函数,如 adam、sgd 等,
正则化器 − 正则化器模块提供 L1 正则化器、L2 正则化器等函数,
让我们在下一章中详细学习 Keras 模块。