Keras 神經網路構建學習

2021-08-29 04:41:49 字數 3756 閱讀 4851

keras 是簡單易用、高效強大的神經網路庫,底層計算可基於 tensorflow 或 theano 平台實現。本篇將詳細介紹 keras 模型構建的具體步驟。通過閱讀本篇內容您將了解到:

- keras 模型構建的主要步驟;

- keras 神經網路搭建的一般過程;

keras 模型構建主要包括5個步驟:定義(define),編譯(compile),訓練(fit),評估(evaluate),**(prediction)。

定義模型是 keras 構建神經網路的第一步,這裡我們由sequential類生成了乙個例項,然後新增了乙個dense型別的層(layer),引數2表示該層神經元的數量。

層的新增也可以在sequential例項生成時新增:

layers = [dense(2)]

model = sequential(layers)

一般層的新增順序即是各層連線的順序,也是資料流經模型被處理的順序。

模型新增的第一層必須指定輸入引數的數量,指定方式由具體模型型別而定,例如多層感知模型提供了乙個input_dim引數來指定。

model = sequential()

model.add(dense(5, input_dim=2))

model.add(dense(1))

上面**我們定義了乙個簡單的多層感知模型:具有2個入參的輸入層,具有5個神經元的隱含層,具有1個神經元的輸出層。

model = sequential()

model.add(dense(5, input_dim=2))

model.add(activation('relu'))

model.add(dense(1))

model.add(activation('sigmoid'))

這裡我們在之前的基礎上新增了兩個activation新層,你可以看到層的新增在 keras 中操作起來是非常簡便的。

model.compile(optimizer='sgd', loss='mse', metrics=['accuracy'])

定義好模型之後我們需要通過編譯(compile)來對學習過程進行配置,我們可以為模型的編譯指定各類引數包括:優化器optimizer,損失函式loss,評估指標metrics

編譯的過程也是 keras 將我們剛定義好的模型轉化為底層平台(tensorflow 或 theano)結構描述過程,底層平台會負責後續的計算任務,gpu、cpu 的排程選擇,分布式執行等。

history = model.fit(x, y, batch_size=10, nb_epoch=100)

編譯後的模型就可開始訓練(fit)了,fit 的過程可以簡單的理解為就是通過測試資料來確定神經元間連線權重(weight)的過程。

測試資料分為兩部分,矩陣型別的輸入資料x,和對應的陣列型別的輸出y資料。

神經網路訓練通常採用的是反向傳播(backpropagation)演算法,因此我們需要指定訓練週期nb_epoch和每次計算的資料量batch_size

訓練完成後,history會儲存模型訓練後的相關描述。

loss, accuracy = model.evaluate(x, y)

訓練後的模型,我們需要對其效能進行評估,以此來確定訓練效果是否達到了我們的預期。

evaluate方法的引數x,yfit方法的資料型別是一樣的,一般會選擇用測試資料進行評估。

predictions = model.predict(x)

當模型的效能評估達到要求後,我們就可以用訓練好的模型在新的資料上進行**了。

predictions是**返回的結果,資料格式與輸出層的輸出格式相同。

# 簡易多層感知神經網路示例

from keras.models import sequential

from keras.layers import dense

import numpy

# 載入,預處理資料集

dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")

x = dataset[:,0:8]

y = dataset[:,8]

# 1. 定義模型

model = sequential()

model.add(dense(12, input_dim=8, activation='relu'))

model.add(dense(1, activation='sigmoid'))

# 2. 編譯模型

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 3. 訓練模型

history = model.fit(x, y, nb_epoch=100, batch_size=10)

# 4. 評估模型

loss, accuracy = model.evaluate(x, y)

print("\nloss: %.2f, accuracy: %.2f%%" % (loss, accuracy*100))

# 5. 資料**

probabilities = model.predict(x)

predictions = [float(round(x)) for x in probabilities]

accuracy = numpy.mean(predictions == y)

print("prediction accuracy: %.2f%%" % (accuracy*100))

768/768 [******************************] - 0s - loss: 0.5219 - acc: 0.7591

epoch 99/100

768/768 [******************************] - 0s - loss: 0.5250 - acc: 0.7474

epoch 100/100

768/768 [******************************] - 0s - loss: 0.5416 - acc: 0.7331

32/768 [>.............................] - eta: 0s

loss: 0.51, accuracy: 74.87%

prediction accuracy: 74.87%

keras 構建卷積神經網路人臉識別

olivettifaces是紐約大學的乙個比較小的人臉庫,由40個人的400張構成,即每個人的人臉為10張。每張的灰度級為8位,每個畫素的灰度大小位於0 255之間,每張大小為64 64。大小是1190 942,一共有20 20張人臉,故每張人臉大小是 1190 20 942 20 即57 47 2...

卷積神經網路 Keras深度學習

全文引用 卷積神經網路之keras深度學習 卷積神經網路之優缺點 優點 共享卷積核,對高維資料處理無壓力 無需手動選取特徵,訓練好權重,即得特徵分類效果好 缺點 需要調參,需要大樣本量,訓練最好要gpu 物理含義不明確 也就說,我們並不知道沒個卷積層到底提取到的是什麼特徵,而且神經網路本身就是一種難...

Keras構建神經網路的3種方法

有三種方法可以在tensorflow中構建keras模型 sequential api 當你試圖使用單個輸入 輸出和層分支構建簡單模型時,sequential api是最好的方法。對於想快速學習的新手來說,這是乙個很好的選擇。functional api 函式api是構建keras模型最流行的方法。...