Keras深度學(xué)習(xí)實(shí)戰(zhàn)》">《Keras深度學(xué)習(xí)實(shí)戰(zhàn)》
690
2025-04-02
2.7 序貫?zāi)P?/p>
可以通過將多個(gè)層堆疊并傳遞給Sequential的構(gòu)造函數(shù)來創(chuàng)建序貫?zāi)P汀?/p>
怎么做
創(chuàng)建基本序貫?zāi)P蜕婕爸付ㄒ粋€(gè)或多個(gè)層。
創(chuàng)建序貫?zāi)P?/p>
我們將創(chuàng)建一個(gè)包含四層的序貫網(wǎng)絡(luò)。
1.第1層是全連接層(稠密層),其input_shape為(*,784),output_shape為(*,32)。
稠密層是一個(gè)根據(jù)一定規(guī)則密集連接的神經(jīng)網(wǎng)絡(luò)層,實(shí)現(xiàn)操作:output = activation(dot(input,kernel)+ bias)。其中激活函數(shù)(activation)是傳遞激活參數(shù)的函數(shù),核(kernel)是由層創(chuàng)建的權(quán)重矩陣,偏差(bias)是層創(chuàng)建的偏差向量(僅當(dāng)use_bias為True時(shí)才適用)。
2.第2層是激活層,將tanh激活函數(shù)用于激活輸入張量:
Activation也可以作為參數(shù)應(yīng)用于稠密層:
3.第3層是一個(gè)稠密層,輸出為(*,10)。
4.第4層具有應(yīng)用softmax函數(shù)的Activation:
在數(shù)學(xué)中,softmax函數(shù)也稱為歸一化指數(shù)函數(shù),是邏輯函數(shù)的泛化,它將一個(gè)含任意實(shí)數(shù)的K維向量z壓縮到另一個(gè)K維實(shí)向量σ(z)。其中每個(gè)元素都在(0~1)范圍內(nèi),所有元素加起來為1。如以下公式所示:
5.創(chuàng)建的模型如下:
Sequential是Model的子類,還有一些其他方法將會(huì)在后續(xù)章節(jié)進(jìn)行介紹。
編譯模型
編譯模型:
有關(guān)每個(gè)參數(shù)含義的詳細(xì)信息,請參閱文檔https://keras.io/models/sequential/#the-sequential-model-api。
訓(xùn)練模型
此方法用于以指定次數(shù)(數(shù)據(jù)集上的迭代)訓(xùn)練模型:
有關(guān)每個(gè)參數(shù)含義的詳細(xì)信息,請參閱文檔https://keras.io/models/sequential/#the- sequential-model-api。
評估模型
evaluate方法用于評估模型指標(biāo),使用批處理完成:
模型預(yù)測
調(diào)用以下predict? API進(jìn)行預(yù)測,它返回一個(gè)numpy數(shù)組:
接下來給出一個(gè)結(jié)合使用這些API的實(shí)例。
把它們結(jié)合
我們將使用皮馬印第安人糖尿病數(shù)據(jù)集。
該數(shù)據(jù)集最初來自美國糖尿病、消化系統(tǒng)和腎臟疾病研究所,目標(biāo)是使用數(shù)據(jù)集中包括的測量值來診斷性地預(yù)測患者是否患有糖尿病。不過這些數(shù)據(jù)集有一定的局限性,例如,數(shù)據(jù)集中的所有患者都是大于21歲的女性皮馬印第安人。數(shù)據(jù)集由若干醫(yī)學(xué)預(yù)測變量和一個(gè)目標(biāo)變量(結(jié)果)組成,預(yù)測變量包括患者的懷孕次數(shù)、BMI、胰島素水平、年齡等。
數(shù)據(jù)集的形狀為(768,9)。
數(shù)據(jù)集的值包括:
X的值,為第0到第7列:
Y的值是數(shù)據(jù)集的第8列,如下圖所示:
模型內(nèi)部檢驗(yàn)
通過在調(diào)試器中進(jìn)行模型檢驗(yàn),可以在調(diào)用compile方法之前得到如下模型屬性:
模型內(nèi)部編譯
調(diào)用model.compile()時(shí)后臺(tái)會(huì)進(jìn)行如下操作:
從后端獲得優(yōu)化器。
以下是支持的優(yōu)化器列表:
初始化損失函數(shù)
所用的損失函數(shù)是二元交叉熵?fù)p失。
交叉熵?fù)p失(也稱為對數(shù)損失)用于測量模型的性能(分類模型),其輸出是介于0~1之間的概率值,隨著預(yù)測概率偏離實(shí)際值的程度變化而變化:
初始化所有輸出的內(nèi)部變量:
設(shè)置模型目標(biāo):
設(shè)置樣本權(quán)重:
在編譯之前,將以下值分配給樣本權(quán)重和sample_weight_modes:
運(yùn)行代碼后,它會(huì)初始化為以下值:
設(shè)置指標(biāo):
接下來,我們設(shè)置指標(biāo)名稱和metrics_tensors,用于存儲(chǔ)實(shí)際指標(biāo):
計(jì)算總損失和指標(biāo):
計(jì)算損失并添加到self.metrics_tensors:
接下來,計(jì)算嵌套指標(biāo)和nested_weighted_metrics:
初始化測試、訓(xùn)練和預(yù)測函數(shù):
全部惰性初始化:
對可訓(xùn)練權(quán)重進(jìn)行排序:
最后,我們初始化可訓(xùn)練的權(quán)重:
模型訓(xùn)練
調(diào)用model.fit進(jìn)行模型訓(xùn)練,執(zhí)行以下步驟。
數(shù)據(jù)驗(yàn)證:
將validation_data傳遞給Keras模型時(shí),它必須包含兩個(gè)參數(shù)(x_val,y_val)或三個(gè)參數(shù)(x_val,y_val和val_sample_weights)。
模型輸出
上述代碼中模型指標(biāo)的最終輸出顯示如下:
深度學(xué)習(xí) Keras
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。