keras例程學習與神經網路理解(一)

2021-08-17 05:42:29 字數 1555 閱讀 5961

keras的example資料夾中有很多例程,學習mnist_mlp.py例程

該例程實現功能為,從mnist資料集獲取60000個訓練樣本和10000個測試樣本,樣本為0-9十個數字,用全連線神經網路進行訓練,並測試結果。

例程採用60000個資料樣本進行訓練,對於一般的電腦來說,這樣訓練會比較費時間,學習測試較慢

所以,可以加入以下幾行**:

# mnist has 60000 datas,down to 6000 to accelerate

x_train=x_train[:6000]

y_train=y_train[:6000]

將原始60000個樣本只取前6000個樣本進行訓練

例程的核心**為(部分數值有修改):

model = sequential()

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

model.add(dropout(0.2))

model.add(dense(64, activation='relu'))

model.add(dropout(0.2))

model.add(dense(num_classes, activation='softmax'))

依次講解:

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

為model新增dense層,即全鏈結層,該層有784維輸入,512為輸出

model.add(dropout(0.2))

新增dropout層,訓練時概率性丟棄

model.add(dense(64, activation='relu'))

再次新增dense層,64維輸出(輸入為前一層,512維)

model.add(dense(num_classes, activation='softmax'))

再次新增dense層,10維輸出(num_classes=10,即0-9十個數字)

所以我們大致能夠知道,神經網路是輸入784維,第一層512維,第二層64維,輸出10維。

在例程末尾,可以新增兩句

model.summary()

print (model.get_weights())

即列印訓練出的model的概況和權值

程式執行結果如下:

測試準確率0.9515(這個準確率不重要,重要是理解程式和深度學習的原理)

下面我們能看到各層的引數概況,跟我們預想一致,784維輸入,第一層512維,第二層64維,第三層10維

第三列param是本層的引數數量

這裡有個問題還沒搞明白:

第一層784輸入,512輸出,引數個數應當是784×512=401408,但列印結果為401920=785×512

類似的,第二層引數個數32832=513×64

為什麼每層的引數數量是(輸入維度+1)×(輸出維度),這個+1是哪來的,求教。

Keras 神經網路構建學習

keras 是簡單易用 高效強大的神經網路庫,底層計算可基於 tensorflow 或 theano 平台實現。本篇將詳細介紹 keras 模型構建的具體步驟。通過閱讀本篇內容您將了解到 keras 模型構建的主要步驟 keras 神經網路搭建的一般過程 keras 模型構建主要包括5個步驟 定義 ...

卷積神經網路 Keras深度學習

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

神經網路的keras實現

keras是構建在tensorflow基礎上的python第三方庫,專門用於神經網路的構建與計算,同時還整合了scikit learn庫,使得可以在神經網路的構建中運用機器學習的方法。現在就用keras來構建之前構建過的神經網路。實現 首先匯入所需要的包 from keras.models impo...