📜  Keras-深度学习

📅  最后修改于: 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模块。