聽它爹說他孩兒 Keras 學習筆記 4 1

2021-08-18 12:09:02 字數 1536 閱讀 7268

這是

《deep learning with python》第 3 章的學習筆記。

本章內容包括:

你已經知道,神經網路的訓練涉及如下東西:

層:深度學習的建築構件

層是神經網路的基本資料結構。層是資料處理模組,層的輸入和輸出是乙個或多個張量。有些層沒有狀態表示,但更多常見的層有個狀態表示:層的權重。權重包含著該網路的知識,用於張量隨機梯度下降的學習。

不同的層適用於不同的張量格式和不同的資料型別。例如,簡單的向量資料格式為 2 維張量(樣本,特徵),常為密集連線層所用。密集連線層,又叫全連線層,在 keras 中為 dense 類。序列資料格式為 3 維張量(樣本,時間步,特徵),常由諸如 lstm 等迴圈層進行處理。影象資料格式為 4 維張量,常由卷積層(conv2d)處理。

建造 keras 深度學習模型,就是把幾個相互相容的層組合成轉換資料的管道。這種管道很好用。層的相容性,是特指每個層都只接受特定形狀的張量的輸入,並且輸出的是特定形狀的張量。例如:

from keras import layers

layer = layers.dense(32, input_shape=(784,))

這個 layer 只接受 2 維張量,它的第 1 維(軸 0)有 784 個成員,第 2 維(軸 1)的成員數目不作限定。這個層輸出的張量,第 1 維的成員數目為 32。

在其後定義的層,若與其連線,該層的輸入必須是 32 維向量。此時,keras 已經為你解決了相容性問題。例如:

from keras import models

from keras import layers

model = models.sequential()

model.add(layers.dense(32, input_shape=(784,)))

model.add(layers.dense(32))

第二個層沒有設定引數 input_shape ,但它已經自動地把前面一層的輸出形狀,作為自己的輸入形狀。

模型:層的網路

深度學習模型是由層構成的有向無環圖。最常見的是層的線性棧,單一輸入對映到單一輸出。實際上,深度學習模型有許多種拓撲結構。

損失函式和優化器:學習過程的關鍵配置

確定網路架構後,還要選擇兩樣東西:

有多個輸出的神經網路,可能有多個損失函式(每個輸出有乙個)。但梯度下降過程必須根據某單個標量的損失值,因此,有多個損失函式的網路,將各損失值平均為單一的標量值。

正確地選擇目標函式極其重要,它是使網路損失最小化的捷徑。如果目標與任務不能完全相關聯,網路會不按你的要求而自行終止執行。

幸運的是,在處理諸如分類、回歸和序列**等問題時,有簡單的指導幫助你選擇正確的損失函式。例如,對於2個類的區分問題,你可用「交叉熵二分法」( binary crossentropy );對於多個類的區分問題,可用「交叉熵分類法」(categorical crossentropy),等等。只有當你處理的問題是前所未見的,你才必須開發自己的目標函式。在後面幾章,我們將詳細展示對各種常見問題選擇損失函式。

聽它爹說他孩兒 Keras 學習筆記 3 4

如前所見,我們首個神經網路的各層這樣來轉化資料 output relu dot w,input b 在此,w 和 b 是張量,是層的屬性。它們被叫做層的權重或者可訓練的引數。權重 w 是核心屬性,b 是偏置屬性。權重包含的資訊,用於網路訓練資料的學習。起初,權重矩陣填充的是些微小的隨機數,叫做隨機初...

聽它爹說他孩兒 Keras 學習筆記 4 2

keras 擁有以下重要功能 keras 擁有超過 200,000 的使用者,其中大公司有 google,netflix,uber,cern,yelp,square 等。keras 也是 開搞 kaggle 的流行框架。用 keras 進行開發 keras 開發的流程是這樣的 定義訓練用的資料 輸入...

聽它爹說他孩兒 Keras 學習筆記 5 2

減小網路尺寸 防止過度擬合最簡單的辦法是減小網路尺寸,即減少模型可學習引數的數目。決定模型引數多少的,是層的數目和每層單元的數目。模型的引數越多,儲存容量越大,表示訓練樣本及其目標影射關係的詞典效能越好。例如,具有 500,000 二值引數的模型,可以輕鬆學會 mnist 訓練集全部數字的分類。要永...