丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給skura
發(fā)送

0

如何在Keras中創(chuàng)建自定義損失函數(shù)?

本文作者: skura 2019-11-30 17:47
導語:實用教程

如何在Keras中創(chuàng)建自定義損失函數(shù)?

Dhruv Deshmukh 發(fā)布在 Unsplash 上的照片

我們使用損失函數(shù)來計算一個給定的算法與它所訓練的數(shù)據(jù)的匹配程度。損失計算是基于預測值和實際值之間的差異來做的。如果預測值與實際值相差甚遠,損失函數(shù)將得到一個非常大的數(shù)值。

Keras 是一個創(chuàng)建神經(jīng)網(wǎng)絡的庫,它是開源的,用 Python 語言編寫。Keras 不支持低級計算,但它運行在諸如 Theano 和 TensorFlow 之類的庫上。

在本教程中,我們將使用 TensorFlow 作為 Keras backend。backend 是一個 Keras 庫,用于執(zhí)行計算,如張量積、卷積和其他類似的活動。

如何在Keras中創(chuàng)建自定義損失函數(shù)?

Karim MANJRA 發(fā)布在 Unsplash 上的照片

keras 中常用的損失函數(shù)

如上所述,我們可以創(chuàng)建一個我們自己的自定義損失函數(shù);但是在這之前,討論現(xiàn)有的 Keras 損失函數(shù)是很好的。下面是兩個最常用的:

均方誤差

均方誤差(MSE)測量誤差平方的平均值。它是預測值和實際值之間的平均平方差。

平均絕對誤差

平均絕對誤差(MAE)是兩個連續(xù)變量之間差的度量,通常用 x 和 y 表示。平均絕對誤差是絕對誤差 e=y-x 的平均值,其中 y 是預測值,x 是實際值。

什么是自定義損失函數(shù)?

對于不同的損失函數(shù),計算損失的公式有不同的定義。在某些情況下,我們可能需要使用 Keras 沒有提供的損失計算公式。在這種情況下,我們可以考慮定義和使用我們自己的損失函數(shù)。這種用戶定義的損失函數(shù)稱為自定義損失函數(shù)。

Keras 中的自定義損失函數(shù)可以以我們想要的方式提高機器學習模型的性能,并且對于更有效地解決特定問題非常有用。例如,假設我們正在構(gòu)建一個股票投資組合優(yōu)化模型。在這種情況下,設計一個定制損失函數(shù)將有助于實現(xiàn)對在錯誤方向上預測價格變動的巨大懲罰。

我們可以通過編寫一個返回標量并接受兩個參數(shù)(即真值和預測值)的函數(shù),在 Keras 中創(chuàng)建一個自定義損失函數(shù)。然后,我們將自定義損失函數(shù)傳遞給 model.compile 作為參數(shù),就像處理任何其他損失函數(shù)一樣。

實現(xiàn)自定義損失函數(shù)

現(xiàn)在讓我們?yōu)槲覀兊?Keras 模型實現(xiàn)一個自定義的損失函數(shù)。首先,我們需要定義我們的 Keras 模型。我們的模型實例名是 keras_model,我們使用 keras 的 sequential()函數(shù)來創(chuàng)建模型。

我們有三個層,都是形狀為 64、64 和 1 的密集層。我們有一個為 1 的輸入形狀,我們使用  ReLU 激活函數(shù)(校正線性單位)。

如何在Keras中創(chuàng)建自定義損失函數(shù)?

一旦定義了模型,我們就需要定義我們的自定義損失函數(shù)。其實現(xiàn)如下所示。我們將實際值和預測值傳遞給這個函數(shù)。

注意,我們將實際值和預測值的差除以 10,這是損失函數(shù)的自定義部分。在缺省損失函數(shù)中,實際值和預測值的差值不除以 10。

記住,這完全取決于你的特定用例需要編寫什么樣的自定義損失函數(shù)。在這里我們除以 10,這意味著我們希望在計算過程中降低損失的大小。

在 MSE 的默認情況下,損失的大小將是此自定義實現(xiàn)的 10 倍。因此,當我們的損失值變得非常大并且計算變得非常昂貴時,我們可以使用這種定制的損失函數(shù)。

在這里,我們從這個函數(shù)返回一個標量自定義損失值。

如何在Keras中創(chuàng)建自定義損失函數(shù)?

定義 keras 的自定義損失函數(shù)

要進一步使用自定義損失函數(shù),我們需要定義優(yōu)化器。我們將在這里使用 RMSProp 優(yōu)化器。RMSprop 代表均方根傳播。RMSprop 優(yōu)化器類似于具有動量的梯度下降。常用的優(yōu)化器被命名為 rmsprop、Adam 和 sgd。

我們需要將自定義的損失函數(shù)和優(yōu)化器傳遞給在模型實例上調(diào)用的 compile 方法。然后我們打印模型以確保編譯時沒有錯誤。

如何在Keras中創(chuàng)建自定義損失函數(shù)?

Keras 模型優(yōu)化器和編譯模型

現(xiàn)在是時候訓練這個模型,看看它是否正常工作了。為此,我們在模型上使用擬合方法,傳遞自變量 x 和因變量 y 以及 epochs=100。

這里的目的是確保模型訓練沒有任何錯誤,并且隨著 epoch 數(shù)的增加,損失逐漸減少。你可以查看下圖中的模型訓練的結(jié)果:

如何在Keras中創(chuàng)建自定義損失函數(shù)?

epoch=100 的 Keras 模型訓練

結(jié)語

在本文中,我們了解了什么是自定義損失函數(shù),以及如何在 Keras 模型中定義一個損失函數(shù)。然后,我們使用自定義損失函數(shù)編譯了 Keras 模型。最后,我們成功地訓練了模型,實現(xiàn)了自定義損失功能。

via:https://heartbeat.fritz.ai/how-to-create-a-custom-loss-function-in-keras-637bd312e9ab 

雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

如何在Keras中創(chuàng)建自定義損失函數(shù)?

分享:
相關文章
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說