簡體   English   中英

在 Python 中使用 Keras 獲得獎勵的自定義損失函數

[英]Custom Loss Function for Reward using Keras in Python

我有一個模型,我想構建一個自定義損失函數,我有我的狀態,這是我的 X 值,然后我有我的動作,這是我正在預測的 7 個單熱分類值,這是我的 Y 值。

但是我不確定如何將獎勵傳遞給損失函數。 我也不確定實際的功能應該是什么,但我可以稍后對此進行試驗。

x = input_data[:, :-2]  # States
y = input_data[:, -2]  # Actions
r = input_data[:, -1]  # Rewards

def custom_loss(y_pred, y_true):
     loss = K.square(y_pred - y_true) * r
     return loss

model.compile(loss=custom_loss, optimizer='adam', metrics=['accuracy'])
model.fit(x, y)

您可以編寫一個返回另一個函數的函數。 您將獎勵作為參數傳遞給 top 函數:

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

  return custom_loss

.
.
.
model.compile(loss=[penalized_loss(reward=r)], optimizer='adam', metrics=['accuracy'])

我還提供了一個非常愚蠢的工作示例的要點: https : //gist.github.com/kolygri/c222adba4dff710c6c53bf83c0ed5d21

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM