2017-10-11 80 views
0

我正在迴歸問題。我的數據集的標籤範圍從[0,1]。由於設計目的,價值超過0.3的標籤被轉換爲負值,即0.35轉換爲-0.35結合交叉熵和mse損失函數

在凱拉斯,我第一次嘗試mse作爲損失函數,但表現並不好。在我意識到標籤的標誌後,我也嘗試了二元交叉熵。但表現依然不佳。

正如我上面所解釋的,似乎我們可以利用兩個損失函數並將它們相加。但我不知道如何編寫代碼。此外,如果您對此特定數據集有任何其他建議,請讓我知道。

+0

你是否嘗試了平均絕對誤差(mae)?而且,二叉交叉熵用於分類問題,而不是迴歸問題。 – semicolon

+0

@semicolon在過去幾天我試過DNN。我關注的性能指標是符號精度。當然,預測值也很重要。採用'mse'和DNN結構,當前符號精度爲81.5%。我試着用'mae'作爲丟失函數和相同DNN結構的建議。標誌準確率爲81.7%。下面Julio給出的答案几乎是我想要的,儘管提出了一個錯誤。實際上,我想介紹交叉熵的原因是爲了提高符號精度。 – Wedoso

回答

0

您可以創建自己的損失函數,結賬keras documentationsource code的想法,但它應該是這樣的:

from keras.losses import mean_squared_error, binary_crossentropy 

def my_custom_loss(y_true, y_pred): 
    mse = mean_squared_error(y_true, y_pred) 
    crossentropy = binary_crossentropy(y_true, y_pred) 
    return mse + crossentropy 

... 

model.compile(loss=my_custom_loss, ...) 

也會檢出backend API如果您需要基本的張量操作中使用的原語

+0

有一個錯誤:'TypeError:custom_loss()只需要2個參數(給出3個)'。我編譯模型爲''model.compile(optimizer ='adam',loss = self.custom_loss,metrics = ['mse'])' – Wedoso

+0

'self'是第三個參數,這就是爲什麼給你一個錯誤 –