Keras - 深度學習



Keras 提供了一個完整的框架來建立任何型別的深度神經網路。Keras 既創新又易於學習。它支援從簡單的神經網路到非常龐大且複雜的神經網路模型。讓我們在本節中瞭解 Keras 框架的架構以及 Keras 如何幫助深度學習。

Keras 的架構

Keras API 可以分為三個主要類別:

  • 模型
  • 核心模組

在 Keras 中,每個 ANN 都由Keras 模型表示。反過來,每個 Keras 模型都是Keras 層的組合,並表示 ANN 層,如輸入層、隱藏層、輸出層、卷積層、池化層等。Keras 模型和層訪問Keras 模組以獲取啟用函式、損失函式、正則化函式等。使用 Keras 模型、Keras 層和 Keras 模組,任何 ANN 演算法(CNN、RNN 等)都可以以簡單有效的方式表示。

下圖描述了模型、層和核心模組之間的關係:

Architecture of Keras

讓我們看看 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 模型匯入Sequential模型

  • 第 2 行匯入Dense層和Activation模組

  • 第 4 行使用Sequential API 建立一個新的順序模型

  • 第 5 行新增一個具有relu啟用(使用 Activation 模組)函式的密集層(Dense API)。

Sequential模型公開了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 模型匯入Sequential模型

  • 第 2 行匯入Dense層和Activation模組

  • 第 4 行使用Sequential API 建立一個新的順序模型

  • 第 5 行新增一個具有relu啟用(使用 Activation 模組)函式的密集層(Dense API)。

  • 第 6 行新增一個 dropout 層(Dropout API)來處理過擬合。

  • 第 7 行新增另一個具有relu啟用(使用 Activation 模組)函式的密集層(Dense API)。

  • 第 8 行新增另一個 dropout 層(Dropout API)來處理過擬合。

  • 第 9 行新增最終的密集層(Dense API),並使用softmax啟用(使用 Activation 模組)函式。

Keras 還提供建立我們自己的自定義層的選項。自定義層可以透過子類化Keras.Layer類來建立,這類似於子類化 Keras 模型。

核心模組

Keras 還提供了許多內建的神經網路相關函式,以便正確建立 Keras 模型和 Keras 層。其中一些功能如下:

  • 啟用模組 - 啟用函式是 ANN 中的一個重要概念,啟用模組提供了許多啟用函式,如 softmax、relu 等。

  • 損失模組 - 損失模組提供損失函式,如 mean_squared_error、mean_absolute_error、poisson 等。

  • 最佳化器模組 - 最佳化器模組提供最佳化器函式,如 adam、sgd 等。

  • 正則化器 - 正則化器模組提供函式,如 L1 正則化器、L2 正則化器等。

讓我們在下一章詳細學習 Keras 模組。

廣告