我正在迴歸問題。我的數據集的標籤範圍從[0,1]
。由於設計目的,價值超過0.3
的標籤被轉換爲負值,即0.35
轉換爲-0.35
。結合交叉熵和mse損失函數
在凱拉斯,我第一次嘗試mse
作爲損失函數,但表現並不好。在我意識到標籤的標誌後,我也嘗試了二元交叉熵。但表現依然不佳。
正如我上面所解釋的,似乎我們可以利用兩個損失函數並將它們相加。但我不知道如何編寫代碼。此外,如果您對此特定數據集有任何其他建議,請讓我知道。
我正在迴歸問題。我的數據集的標籤範圍從[0,1]
。由於設計目的,價值超過0.3
的標籤被轉換爲負值,即0.35
轉換爲-0.35
。結合交叉熵和mse損失函數
在凱拉斯,我第一次嘗試mse
作爲損失函數,但表現並不好。在我意識到標籤的標誌後,我也嘗試了二元交叉熵。但表現依然不佳。
正如我上面所解釋的,似乎我們可以利用兩個損失函數並將它們相加。但我不知道如何編寫代碼。此外,如果您對此特定數據集有任何其他建議,請讓我知道。
您可以創建自己的損失函數,結賬keras documentation和source 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如果您需要基本的張量操作中使用的原語
有一個錯誤:'TypeError:custom_loss()只需要2個參數(給出3個)'。我編譯模型爲''model.compile(optimizer ='adam',loss = self.custom_loss,metrics = ['mse'])' – Wedoso
'self'是第三個參數,這就是爲什麼給你一個錯誤 –
你是否嘗試了平均絕對誤差(mae)?而且,二叉交叉熵用於分類問題,而不是迴歸問題。 – semicolon
@semicolon在過去幾天我試過DNN。我關注的性能指標是符號精度。當然,預測值也很重要。採用'mse'和DNN結構,當前符號精度爲81.5%。我試着用'mae'作爲丟失函數和相同DNN結構的建議。標誌準確率爲81.7%。下面Julio給出的答案几乎是我想要的,儘管提出了一個錯誤。實際上,我想介紹交叉熵的原因是爲了提高符號精度。 – Wedoso