keras_1

用 Keras 構(gòu)建神經(jīng)網(wǎng)絡(luò)

(摘錄自udacity)

要使用 Keras,你需要知道以下幾個核心概念。

序列模型

    from keras.models import Sequential

    #Create the Sequential model
    model = Sequential()

keras.models.Sequential 類是神經(jīng)網(wǎng)絡(luò)模型的封裝容器。它會提供常見的函數(shù),例如 fit()、evaluate()compile()。我們將介紹這些函數(shù)(在碰到這些函數(shù)的時候)。我們開始研究模型的層吧。

Keras 層就像神經(jīng)網(wǎng)絡(luò)層。有全連接層、最大池化層和激活層。你可以使用模型的 add() 函數(shù)添加層。例如,簡單的模型可以如下所示:

    from keras.models import Sequential
    from keras.layers.core import Dense, Activation, Flatten

    #創(chuàng)建序列模型
    model = Sequential()

    #第一層 - 添加有128個節(jié)點的全連接層以及32個節(jié)點的輸入層
    model.add(Dense(128, input_dim=32))

    #第二層 - 添加 softmax 激活層
    model.add(Activation('softmax'))

    #第三層 - 添加全連接層
    model.add(Dense(10))

    #第四層 - 添加 Sigmoid 激活層
    model.add(Activation('sigmoid'))

Keras 將根據(jù)第一層自動推斷后續(xù)所有層的形狀。這意味著,你只需為第一層設(shè)置輸入維度。

上面的第一層 model.add(Dense(input_dim=32)) 將維度設(shè)為 32(表示數(shù)據(jù)來自 32 維空間)。第二層級獲取第一層級的輸出,并將輸出維度設(shè)為 128 個節(jié)點。這種將輸出傳遞給下一層級的鏈繼續(xù)下去,直到最后一個層級(即模型的輸出)??梢钥闯鲚敵鼍S度是 10。

構(gòu)建好模型后,我們就可以用以下命令對其進行編譯。我們將損失函數(shù)指定為我們一直處理的 categorical_crossentropy。我們還可以指定優(yōu)化程序,稍后我們將了解這一概念,暫時將使用 adam。最后,我們可以指定評估模型用到的指標(biāo)。我們將使用準(zhǔn)確率。

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

我們可以使用以下命令來查看模型架構(gòu):

model.summary()

然后使用以下命令對其進行擬合,指定 epoch 次數(shù)和我們希望在屏幕上顯示的信息詳細(xì)程度。

然后使用fit命令訓(xùn)練模型并通過 epoch 參數(shù)來指定訓(xùn)練輪數(shù)(周期),每 epoch 完成對整數(shù)據(jù)集的一次遍歷。 verbose 參數(shù)可以指定顯示訓(xùn)練過程信息類型,這里定義為 0 表示不顯示信息。

model.fit(X, y, nb_epoch=1000, verbose=0)

注意:在 Keras 1 中,nb_epoch 會設(shè)置 epoch 次數(shù),但是在 Keras 2 中,變成了 epochs。

最后,我們可以使用以下命令來評估模型:

model.evaluate()

KERAS優(yōu)化器原理

Keras 優(yōu)化程序

Keras 中有很多優(yōu)化程序,建議你訪問此鏈接或這篇精彩博文(此鏈接來自外網(wǎng),國內(nèi)網(wǎng)絡(luò)可能打不開),詳細(xì)了解這些優(yōu)化程序。這些優(yōu)化程序結(jié)合使用了上述技巧,以及其他一些技巧。最常見的包括:

SGD

這是隨機梯度下降。它使用了以下參數(shù):

  • 學(xué)習(xí)速率。
  • 動量(獲取前幾步的加權(quán)平均值,以便獲得動量而不至于陷在局部最低點)。
  • Nesterov 動量(當(dāng)最接近解決方案時,它會減緩梯度)。

Adam

Adam (Adaptive Moment Estimation) 使用更復(fù)雜的指數(shù)衰減,不僅僅會考慮平均值(第一個動量),并且會考慮前幾步的方差(第二個動量)。

RMSProp

RMSProp (RMS 表示均方根誤差)通過除以按指數(shù)衰減的平方梯度均值來減小學(xué)習(xí)速率。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容