Keras 深度學(xué)習(xí)

2021-11-01 10:04 更新

Keras 提供了一個(gè)完整的框架來(lái)創(chuàng)建任何類型的神經(jīng)網(wǎng)絡(luò)。Keras 具有創(chuàng)新性,而且非常容易學(xué)習(xí)。它支持簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)到非常大和復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型。接下來(lái),在本章中將會(huì)了解 Keras 框架的架構(gòu)以及 Keras 如何幫助深度學(xué)習(xí)。

Keras 架構(gòu)

Keras API 可以分為三個(gè)主要類別:

  • 模型
  • 核心模塊

在 Keras 中,每個(gè) ANN 都由Keras 模型表示。反過(guò)來(lái),每個(gè) Keras 模型都是由Keras 層組成,代表 ANN 層,如輸入、隱藏層、輸出層、卷積層、池化層等,Keras 模型和層訪問(wèn)Keras 模塊,用于激活函數(shù)、損失函數(shù)、正則化函數(shù)等,使用 Keras 模型、Keras 層和 Keras 模塊,可以以簡(jiǎn)單有效的方式表示任何 ANN 算法(CNN、RNN 等)。

下圖描述了模型、層和核心模塊之間的關(guān)系:

讓我們看看 Keras 模型、Keras 層和 Keras 模塊。

模型

Keras 模型由兩種類型:

順序模型(Sequential Model)

順序模型基本上是 Keras 層的線性組合。序列模型簡(jiǎn)單、最小,并且能夠表示幾乎所有可用的神經(jīng)網(wǎng)絡(luò)。

一個(gè)簡(jiǎn)單的順序模型如下 :

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


model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,)))
  • 第 1 行 從 Keras 模型導(dǎo)入Sequential模型
  • 第 2 行 導(dǎo)入Dense層和Activation模塊
  • 第 4 行 使用Sequential API創(chuàng)建一個(gè)新的順序模型
  • 第 5 行 添加了具有relu激活(使用 Activation 模塊)功能的密集層(Dense API)

順序模型公開(kāi)了Model類供我們創(chuàng)建自定義模型。我們可以使用子分類概念來(lái)創(chuàng)建我們自己的復(fù)雜模型。

功能 API

功能 API 基本上用于創(chuàng)建復(fù)雜的模型。

Keras 模型中的每個(gè) Keras 層代表實(shí)際提出的神經(jīng)網(wǎng)絡(luò)模型中的對(duì)應(yīng)層(輸入層、隱藏層和輸出層)。Keras 提供了很多預(yù)構(gòu)建層,因此可以輕松創(chuàng)建任何復(fù)雜的神經(jīng)網(wǎng)絡(luò)。下面指定了一些重要的 Keras 層,

  • 核心層(Core)
  • 卷積層(Convolution)
  • 池化層(Pooling)
  • 循環(huán)層(Recurrent)

使用順序模型表示神經(jīng)網(wǎng)絡(luò)模型的簡(jiǎn)單 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 模型導(dǎo)入Sequential模型
  • 第 2 行 導(dǎo)入Dense層和Activation模塊
  • 第 4 行 使用Sequential API創(chuàng)建一個(gè)新的順序模型
  • 第 5 行 添加了具有relu激活(使用 Activation 模塊)功能的密集層(Dense API)。
  • 第 6 行 添加了一個(gè) dropout 層(Dropout API)來(lái)處理過(guò)擬合。
  • 第 7 行 添加了另一個(gè)具有relu激活(使用 Activation 模塊)功能的密集層(Dense API)。
  • 第 8 行 添加了另一個(gè) dropout 層(Dropout API)來(lái)處理過(guò)擬合。
  • 第 9 行 添加了具有softmax激活(使用 Activation 模塊)功能的最終密集層(Dense API)。

Keras 還提供了創(chuàng)建我們自己的自定義層的選項(xiàng)。自定義層可以通過(guò)對(duì) Keras.Layer類進(jìn)行子分類來(lái)創(chuàng)建,它類似于對(duì) Keras 模型進(jìn)行子分類。

核心模塊

Keras 還提供了很多內(nèi)置的神經(jīng)網(wǎng)絡(luò)相關(guān)函數(shù)來(lái)正確創(chuàng)建 Keras 模型和 Keras 層。一些功能如下:

  • 激活(Activation)模塊 激活函數(shù)是 ANN 中的一個(gè)重要概念,激活模塊提供了許多激活函數(shù),如:softmax、relu等,
  • 損失(Loss)模塊 損失模塊提供損失函數(shù),如:mean_squared_error、mean_absolute_error、poisson等,
  • 優(yōu)化器(Optimizer)模塊 優(yōu)化器模塊提供優(yōu)化器功能,如:adam、sgd等,
  • 正則化器(Regularizers) 正則化器模塊提供L1正則化器、L2正則化器等功能,

讓我們?cè)诮酉聛?lái)的章節(jié)中詳細(xì)學(xué)習(xí) Keras 模塊。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)