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

2021-08-18 13:15:22 字數 1846 閱讀 3527

keras 擁有以下重要功能:

keras 擁有超過 200,000 的使用者,其中大公司有 google, netflix, uber, cern, yelp, square 等。keras 也是「開搞」(kaggle)的流行框架。

用 keras 進行開發

keras 開發的流程是這樣的:

定義訓練用的資料:輸入張量和目標張量。

定義層(或模型)的網路,把輸入對映到目標。

設定學習過程:選擇損失函式、優化器,以及若干監測指標。

用 fit() 函式,迭代訓練模型。

定義模型有兩種方法:一是用 sequential 類(僅用於層的線性棧,這是最常見的網路架構);二是用函式式介面 (對於多個層構成的有向無環圖,可完整建造各種架構的網路)。這裡有個用 sequential 類定義的兩層模型:

from keras import models

from keras import layers

model = models.sequential()

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

model.add(layers.dense(10, activation='softmax'))

與其相同的模型,用函式式介面定義則是這樣:

input_tensor = layers.input(shape=(784,))

x = layers.dense(32, activation='relu')(input_tensor)

output_tensor = layers.dense(10, activation='softmax')(x)

model = models.model(inputs=input_tensor, outputs=output_tensor)

這時操縱資料張量、層、模型等,彷彿它們都是函式。

在模型架構確定之後,使用 sequential 模型或函式式介面都行,接下來的步驟是相同的。學習過程是在編譯時設定,此時指定優化器和損失函式,以及訓練過程中的監測指標。下面是常見的使用單個損失函式的例子:

from keras import optimizers

model.compile(optimizer=optimizers.rmsprop(lr=0.001),

loss='mse',

metrics=['accuracy'])

最後,在學習過程中,通過 fit( ) 函式把輸入的 numpy 陣列,及其對應的目標資料傳送給模型。這種做法,與 scikit-learn 等機器學習庫的做法相似:

model.fit(input_tensor, target_tensor, batch_size=128, epochs=10)
在開始深度學習應用開發之前,你需要搭建自己的工作站。強烈建議使用 nvidia 的 gpu 跑你的**。

影象處理的卷積網路和處理序列的迴圈網路,在 cpu (即使是多核的)上跑得極慢。同樣的應用,在 gpu 上跑比在 cpu 上跑快 5 至 10 倍。

也可選擇在谷歌或者其他商家提供的雲平台上,以其提供的 gpu 實驗你的應用,但需支付高額費用。

你的本地機器,最好使用 unix 工作站。我們不推薦在 windows 平台上跑 keras 。在 ubuntu 上跑 keras,節省時間並減少麻煩。

為了使用 keras,需要安裝 tensorflow 或者 cntk 、theano 。本書用的底層是 tensorflow 。

深度學習,哪種 gpu 最好 ?

你只能使用 nvidia 公司的 gpu,在其產品中選擇。

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

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

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

這是 deep learning with python 第 3 章的學習筆記。本章內容包括 你已經知道,神經網路的訓練涉及如下東西 層 深度學習的建築構件 層是神經網路的基本資料結構。層是資料處理模組,層的輸入和輸出是乙個或多個張量。有些層沒有狀態表示,但更多常見的層有個狀態表示 層的權重。權重包...

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

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