Keras 简明教程
Keras - Deep learning
Keras 提供了一个完整的框架来创建任何类型的卷积神经网络。Keras 具有创新性,并且非常易于学习。它支持从简单神经网络到非常大和复杂的神经网络模型。在本章中,让我们了解 Keras 框架的架构以及 Keras 如何帮助进行深度学习。
Architecture of Keras
Keras API 可分为三大类 -
-
Model
-
Layer
-
Core Modules
在 Keras 中,每个 ANN 都由 Keras Models 表示。反过来,每个 Keras 模型都是 Keras Layers 的组成,并表示 ANN 层,如输入、隐藏层、输出层、卷积层、池化层等,Keras 模型和层访问 Keras modules 以获取激活函数、损失函数、正则化函数等。使用 Keras 模型、Keras 层和 Keras 模块,任何 ANN 算法(CNN、RNN 等)都可以用简单有效的方式表示。
下图描述了模型、层和核心模块之间的关系 -
让我们来看一下 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,)))
其中,
-
Line 1 从 Keras 模型导入 Sequential 模型
-
Line 2 导入 Dense 层和 Activation 模块
-
Line 4 使用 Sequential API 创建一个新的顺序模型
-
Line 5 添加一个具有 relu 激活(使用激活模块)功能的密集层(密集 API)。
Sequential 模型公开 Model 类以创建自定义模型。我们可以使用子类化概念来创建我们自己的复杂模型。
Functional API − Functional API 基本上可用于创建复杂模型。
Layer
Keras 模型中的每个 Keras 层代表实际提议的神经网络模型中的相应层(输入层、隐藏层和输出层)。Keras 提供了许多预构建的层,以便轻松创建任何复杂的神经网络。以下是其中一些重要的 Keras 层:
-
Core Layers
-
Convolution Layers
-
Pooling Layers
-
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'))
其中,
-
Line 1 从 Keras 模型导入 Sequential 模型
-
Line 2 导入 Dense 层和 Activation 模块
-
Line 4 使用 Sequential API 创建一个新的顺序模型
-
Line 5 添加一个具有 relu 激活(使用激活模块)功能的密集层(密集 API)。
-
Line 6 添加一个 dropout 层(Dropout API)来处理过拟合。
-
Line 7 添加另一个密集层(Dense API),激活功能为 relu (使用 Activation 模块)。
-
Line 8 添加另一个 dropout 层(Dropout API)来处理过拟合。
-
Line 9 添加最终的密集层(Dense API),激活功能为 softmax (使用 Activation 模块)。
Keras 还提供创建我们自己的自定义层。可以通过对 Keras.Layer 类进行子分类来创建自定义层,它类似于对 Keras 模型进行子分类。