keras中sample weight的使用

2021-09-26 02:27:36 字數 1008 閱讀 9303

sample_weight的作用就是為資料集中的資料分配不同的權重。

我的例子是要將資料集的資料分為三類,用0,1,2代表這三類,我這裡想為0分配權重0.3,為1分配權重1,為2分配權重2.。

我的資料是儲存在csv檔案中的,我提取出標籤列表,標籤列表的內容是0,1,2的集合,列表名稱為y_train。我用下面**生成乙個權重的列表:

sample_weights=

for sw in range(len(y_train)):

if y_train[sw]==0:

if y_train[sw]==1:

if y_train[sw]==2:

sample_weights=np.array(sample_weights)

當標籤為0時, sample_weights新增0.3,當標籤為1時, sample_weights新增1,當標籤為2時, sample_weights新增2。

這裡記得不要漏了最後一行,將列表轉化為numpy陣列。因為sample_weight只能是numpy陣列。

建立好陣列之後,下一步是要在compile中新增乙個引數,先看看是新增哪個引數:

這裡的sample_weight_mode分為兩種形式,如果你的權重形式是像我這樣的,就是1d,那sample_weight_mode就設定為none。2d的形式還沒試過,但如果用2d形式,那sample_weight_mode就要設定為sample_weight_mode=『temporal』 。

compile設定完就要設定fit了,我的模型有兩個輸出,但是我只想設定分類輸出,我這裡的分類輸出層命名為』classifier』。那就在fit中新增乙個引數:

sample_weight=
sample_weights是我們上面定義的陣列。

這樣便可簡單實現對資料的加權。

keras中新增正則化

正則項在優化過程中層的引數或層的啟用值新增懲罰項,這些懲罰項將與損失函式一起作為網路的最終優化目標 懲罰項基於層進行懲罰,目前懲罰項的介面與層有關,但dense,conv1d,conv2d,conv3d具有共同的介面。這些層有三個關鍵字引數以施加正則項 from keras import regul...

keras中lstm理解(一)

說到lstm,無可避免的首先要提到最簡單最原始的rnn。在這一部分,我的目標只是理解 迴圈神經網路 中的 迴圈 二字,不打算扔出任何公式,順便一提曾經困惑過我的keras中的輸入資料格式。我們經常可以看到有人說,lstm適合時序序列,變長序列,尤其適合自然語言處理。那麼是什麼賦予它可以處理變長序列的...

Keras中堆疊新增GRU

from keras.layers import lstm,gru是的,這兩模型可以同時引入。model sequential model.add gru 100,dropout 0.2,recurrent dropout 0.2,return sequences true,input shape ...