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模型中导入 序列 模型
-
第 2行 导入 密集 层和 激活 模块
-
第 4行 使用 Sequential API创建一个新的顺序模型
-
第 5行 添加一个密集层(Dense API),并添加 relu activation(使用Activation模块)功能。
顺序 模型也暴露了 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模型中导入 序列 模型
-
第 2行 导入 密集 层和 激活 模块
-
第 4行 使用 Sequential API创建一个新的顺序模型
-
第 5 行添加了一个密集层(Dense API),并带有 relu 激活(使用Activation模块)功能。
-
第 6 行添加一个dropout层(Dropout API)来处理过度拟合。
-
第 7 行增加了另一个密集层(Dense API),并使用 重新 激活(使用Activation模块)功能。
-
第 8 行增加了另一个dropout层(Dropout API)来处理过度拟合。
-
第9行 增加了最后一个密集层(Dense API),使用 softmax 激活(使用Activation模块)函数。
Keras还提供了创建我们自己的定制层的选项。自定义层可以通过对 Keras.Layer 类进行子类化来创建,这与Keras模型的子类化类似。
核心模块
Keras还提供了很多内置的神经网络相关函数,以正确创建Keras模型和Keras层。其中一些函数如下—
- 激活模块 – 激活函数是ANN中的一个重要概念,激活模块提供了许多激活函数,如softmax、relu等、
-
损失模块 – 损失模块提供损失函数,如均方误差、均方绝对误差、泊松等、
-
优化器模块 – 优化器模块提供优化器函数,如adam、sgd等、
-
正则器– 正则器模块提供了L1正则器、L2正则器等函数、
让我们在接下来的章节中详细学习Keras模块。