keras中模型訓(xùn)練class_weight,sample_weight區(qū)別說明
keras 中fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0,
validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0,
steps_per_epoch=None, validation_steps=None)
官方文檔中:
class_weight:字典,將不同的類別映射為不同的權(quán)值,該參數(shù)用來在訓(xùn)練過程中調(diào)整損失函數(shù)(只能用于訓(xùn)練)。該參數(shù)在處理非平衡的訓(xùn)練數(shù)據(jù)(某些類的訓(xùn)練樣本數(shù)很少)時(shí),可以使得損失函數(shù)對(duì)樣本數(shù)不足的數(shù)據(jù)更加關(guān)注。
sample_weight:權(quán)值的numpy array,用于在訓(xùn)練時(shí)調(diào)整損失函數(shù)(僅用于訓(xùn)練)??梢詡鬟f一個(gè)1D的與樣本等長(zhǎng)的向量用于對(duì)樣本進(jìn)行1對(duì)1的加權(quán),或者在面對(duì)時(shí)序數(shù)據(jù)時(shí),傳遞一個(gè)的形式為(samples,sequence_length)的矩陣來為每個(gè)時(shí)間步上的樣本賦不同的權(quán)。這種情況下請(qǐng)確定在編譯模型時(shí)添加了sample_weight_mode='temporal'。
class_weight---主要針對(duì)的上數(shù)據(jù)不均衡問題,比如:異常檢測(cè)的二項(xiàng)分類問題,異常數(shù)據(jù)僅占1%,正常數(shù)據(jù)占99%; 此時(shí)就要設(shè)置不同類對(duì)loss的影響。
sample_weigh---主要解決的是樣本質(zhì)量不同的問題,比如前1000個(gè)樣本的可信度,那么它的權(quán)重就要高,后1000個(gè)樣本可能有錯(cuò)、不可信,那么權(quán)重就要調(diào)低。
補(bǔ)充知識(shí):Keras 中數(shù)據(jù)不均衡時(shí),metrics,class_weight的設(shè)置方法
當(dāng)數(shù)據(jù)處理不均衡時(shí),比如處理癌癥訓(xùn)練問題,有病樣本很少,參考:
http://www.deepideas.net/unbalanced-classes-machine-learning/
主要從兩個(gè)方面著手:
一、loss函數(shù)的權(quán)重問題
訓(xùn)練時(shí),設(shè)置的權(quán)重:
class_weight={
1: n_non_cancer_samples / n_cancer_samples * t
}
二、編譯時(shí)設(shè)置模型的metrics
def sensitivity(y_true, y_pred): true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1))) possible_positives = K.sum(K.round(K.clip(y_true, 0, 1))) return true_positives / (possible_positives + K.epsilon()) def specificity(y_true, y_pred): true_negatives = K.sum(K.round(K.clip((1-y_true) * (1-y_pred), 0, 1))) possible_negatives = K.sum(K.round(K.clip(1-y_true, 0, 1))) return true_negatives / (possible_negatives + K.epsilon()) model.compile( loss='binary_crossentropy', optimizer=RMSprop(0.001), metrics=[sensitivity, specificity] )
以上這篇keras中模型訓(xùn)練class_weight,sample_weight區(qū)別說明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python基礎(chǔ)知識(shí)之私有屬性和私有方法
這篇文章主要介紹了python基礎(chǔ)知識(shí)之私有屬性和私有方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
python使用paramiko執(zhí)行服務(wù)器腳本并拿到實(shí)時(shí)結(jié)果
這篇文章主要介紹了python使用paramiko執(zhí)行服務(wù)器腳本并拿到實(shí)時(shí)結(jié)果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
python for循環(huán)內(nèi)輸出和外輸出方式
這篇文章主要介紹了python for循環(huán)內(nèi)輸出和外輸出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
YOLOv5改進(jìn)之添加SE注意力機(jī)制的詳細(xì)過程
作為當(dāng)前先進(jìn)的深度學(xué)習(xí)目標(biāo)檢測(cè)算法YOLOv5,已經(jīng)集合了大量的trick,但是還是有提高和改進(jìn)的空間,針對(duì)具體應(yīng)用場(chǎng)景下的檢測(cè)難點(diǎn),可以不同的改進(jìn)方法,下面這篇文章主要給大家介紹了關(guān)于YOLOv5改進(jìn)之添加SE注意力機(jī)制的相關(guān)資料,需要的朋友可以參考下2022-08-08
pandas中的DataFrame按指定順序輸出所有列的方法
下面小編就為大家分享一篇pandas中的DataFrame按指定順序輸出所有列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python DataFrame 設(shè)置輸出不顯示index(索引)值的方法
今天小編就為大家分享一篇Python DataFrame 設(shè)置輸出不顯示index(索引)值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python生態(tài)圈圖像格式轉(zhuǎn)換問題(推薦)
在Python生態(tài)圈里,最常用的圖像庫是PIL——盡管已經(jīng)被后來的pillow取代,但因?yàn)閜illow的API幾乎完全繼承了PIL,所以大家還是約定俗成地稱其為PIL。這篇文章主要介紹了Python生態(tài)圈圖像格式轉(zhuǎn)換問題,需要的朋友可以參考下2019-12-12

