📅  最后修改于: 2020-12-11 04:53:22             🧑  作者: Mango
Keras提供了一个完整的框架来创建任何类型的神经网络。 Keras具有创新性并且非常易于学习。它支持简单的神经网络到非常大和复杂的神经网络模型。在本章中,让我们了解Keras框架的体系结构以及Keras如何帮助深度学习。
Keras API可以分为三个主要类别-
在Keras中,每个人工神经网络都由Keras模型表示。反过来,每个Keras模型都是Keras层的组成,并表示ANN层,例如输入,隐藏层,输出层,卷积层,池化层等。Keras模型和层访问Keras模块以用于激活函数,损失函数,正则化函数,等等,使用Keras模型,Keras Layer和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行使用relu激活(使用Activation模块)函数添加了一个密集层(Dense API)。
顺序模型公开了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行使用relu激活(使用Activation模块)函数添加了一个密集层(Dense API)。
第6行添加了一个辍学层(Dropout API)来处理过度拟合。
第7行使用relu激活(使用Activation模块)函数添加了另一个密集层(Dense API)。
第8行添加了另一个辍学层(Dropout API)来处理过度拟合。
第9行添加了具有softmax激活(使用Activation模块)函数的最终密集层(Dense API)。
Keras还提供了创建我们自己的自定义图层的选项。可以通过对Keras.Layer类进行子类化来创建自定义图层,这类似于对Keras模型进行子类化。
Keras还提供了大量内置神经网络相关功能,以正确创建Keras模型和Keras层。一些函数如下-
激活模块-激活函数是ANN中的重要概念,激活模块提供了许多激活函数,例如softmax,relu等,
损失模块-损失模块提供了诸如mean_squared_error,mean_absolute_error,泊松等损失函数,
优化器模块-优化器模块提供诸如adam,sgd等的优化器函数,
正则化器-正则化器模块提供L1正则化器,L2正则化器等功能,
让我们在下一章中详细学习Keras模块。