2017-02-02 88 views
3

我想在keras框架中實現自定義目標函數。 分別是一個加權平均函數,它取兩個參數張量y_true和y_pred;權重信息由y_true張量導出。張量的加權平均值

張量流中是否有加權平均函數? 或有關如何實現這種損失函數的任何其他建議?

我的函數看起來是這樣的:

功能(y_true,y_pred) A =(y_true-y_pred)** 2 W - 源自y_true,同一形狀的張量y_true 返回平均值( A,權重= w)< - 標量

y_true和y_pred是3D張量。

+0

你需要的短語這是一個問題;該帖子目前不包含一個。 – PaulNUK

回答

1

您可以使用herekeras中的一個現有目標(也稱爲損失)。

你也可以實現自己的自定義功能喪失:

from keras import backend as K 

def my_loss(y_true, y_pred): 
    return K.mean(K.square(y_pred - y_true), axis=-1) 

# Let's train the model using RMSprop 
model.compile(loss=my_loss, optimizer='SGD', metrics=['accuracy']) 

通知K模塊,其keras後端,你應該使用,充分利用keras性能,不要做這樣的事情,除非你表現不關心問題:

def my_bad_and_slow_loss(y_true, y_pred): 
    return sum((y_pred - y_true) ** 2, axis=-1) 

對於您的具體情況,如果您需要幫助編寫它,請寫下您期望的目標函數。

更新

你可以試試這個提供的權重 - W爲損失函數:

def my_loss(y_true, y_pred): 
    W = np.arange(9)/9. # some example W 
    return K.mean(K.pow(y_true - y_pred, 2) * W) 
+0

謝謝你的回答! mean_squared_error會很好,除非我需要爲每個條目應用權重。當前的任務是通過cnn進行語義分割(編碼 - 解碼體系結構);兩班,嚴重失衡。我知道keras中的權重類別或樣本權重,但類別之間的比率因圖像而異。這就是爲什麼我正在考慮構建權重張量以相應地爲每個像素應用係數。 –

+0

更新了您的案例。如果需要更多幫助,請發佈您嘗試創建的確切計算。 – ShmulikA