Keras 简明教程

Keras - Deep learning

Keras 提供了一个完整的框架来创建任何类型的卷积神经网络。Keras 具有创新性,并且非常易于学习。它支持从简单神经网络到非常大和复杂的神经网络模型。在本章中,让我们了解 Keras 框架的架构以及 Keras 如何帮助进行深度学习。

Architecture of Keras

Keras API 可分为三大类 -

  1. Model

  2. Layer

  3. Core Modules

在 Keras 中,每个 ANN 都由 Keras Models 表示。反过来,每个 Keras 模型都是 Keras Layers 的组成,并表示 ANN 层,如输入、隐藏层、输出层、卷积层、池化层等,Keras 模型和层访问 Keras modules 以获取激活函数、损失函数、正则化函数等。使用 Keras 模型、Keras 层和 Keras 模块,任何 ANN 算法(CNN、RNN 等)都可以用简单有效的方式表示。

下图描述了模型、层和核心模块之间的关系 -

architecture of keras

让我们来看一下 Keras 模型、Keras 层和 Keras 模块的概述。

Model

Keras 模型有两种类型,如下所述 -

Sequential Model - 顺序模型基本上是 Keras 层的线性组合。顺序模型简单、最小,并有能力表示几乎所有可用的神经网络。

一个简单的顺序模型如下 -

from keras.models import Sequential
from keras.layers import Dense, Activation

model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,)))

其中,

  1. Line 1 从 Keras 模型导入 Sequential 模型

  2. Line 2 导入 Dense 层和 Activation 模块

  3. Line 4 使用 Sequential API 创建一个新的顺序模型

  4. Line 5 添加一个具有 relu 激活(使用激活模块)功能的密集层(密集 API)。

Sequential 模型公开 Model 类以创建自定义模型。我们可以使用子类化概念来创建我们自己的复杂模型。

Functional API − Functional API 基本上可用于创建复杂模型。

Layer

Keras 模型中的每个 Keras 层代表实际提议的神经网络模型中的相应层(输入层、隐藏层和输出层)。Keras 提供了许多预构建的层,以便轻松创建任何复杂的神经网络。以下是其中一些重要的 Keras 层:

  1. Core Layers

  2. Convolution Layers

  3. Pooling Layers

  4. Recurrent Layers

一个用于表示使用 sequential 模型的神经网络模型的简单 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. Line 1 从 Keras 模型导入 Sequential 模型

  2. Line 2 导入 Dense 层和 Activation 模块

  3. Line 4 使用 Sequential API 创建一个新的顺序模型

  4. Line 5 添加一个具有 relu 激活(使用激活模块)功能的密集层(密集 API)。

  5. Line 6 添加一个 dropout 层(Dropout API)来处理过拟合。

  6. Line 7 添加另一个密集层(Dense API),激活功能为 relu (使用 Activation 模块)。

  7. Line 8 添加另一个 dropout 层(Dropout API)来处理过拟合。

  8. Line 9 添加最终的密集层(Dense API),激活功能为 softmax (使用 Activation 模块)。

Keras 还提供创建我们自己的自定义层。可以通过对 Keras.Layer 类进行子分类来创建自定义层,它类似于对 Keras 模型进行子分类。

Core Modules

Keras 还提供许多内置的神经网络相关函数来正确创建 Keras 模型和 Keras 层。以下是一些函数:

  1. Activations module − 激活函数是 ANN 中的一个重要概念,激活模块提供了 softmax、relu 等许多激活函数。

  2. Loss module − 损失模块提供均方误差、平均绝对误差、泊松等损失函数。

  3. Optimizer module − 优化器模块提供 adam、sgd 等优化器函数。

  4. Regularizers − 正则化器模块提供 L1 正则化器、L2 正则化器等函数。

让我们在后续章节中详细了解 Keras 模块。