【问题标题】:Custom Loss Function in Keras - Iterate through TensorFlowKeras 中的自定义损失函数 - 遍历 TensorFlow
【发布时间】:2020-10-21 09:11:23
【问题描述】:

我正在努力在 Keras 中创建自定义损失函数。 这是一个例子。

import keras.backend as K
def test(y_true, y_pred):
     loss = K.square(y_pred - y_true)
     loss = K.mean(loss, axis = 1)
return loss 

现在在这个例子中,我只想减去特定的值 来自 y_pred,但由于这是在 tensorflow 中,我如何迭代抛出它们。

例如,我可以遍历 y_pred 来选择值吗?如何? 假设对于这个例子,批量大小是 5。

我尝试过诸如 y_pred[0...i] tf.arange 等等...

【问题讨论】:

    标签: python machine-learning keras lstm loss-function


    【解决方案1】:

    在编译模型时传递它。喜欢

    model.compile(optimizer='sgd', loss = test)
    

    Keras 会自动迭代它。 您在 return 语句中也有意图错误。

    import keras.backend as K
    def test(y_true, y_pred):
         loss = K.square(y_pred - y_true)
         loss = K.mean(loss, axis = 1)
         return loss 
    
    def test_accuracy(y_true, y_pred):
         return 1 - test(y_true, y_pred)
    

    通过这种方式,您可以将自定义损失函数传递给模型,也可以类似地传递准确度函数

    model.compile(optimizer='sgd', loss = test, metrics=[test_accuracy])
    

    【讨论】:

    • 你好 Sohaib,我正在创建一个自定义损失函数,这样我就可以从 y_pred 中找到设定间隔内最高值的平均值。所以我知道它会自动迭代,但是是否有可能让它在我选择的每个设置间隔中迭代?
    • 耶!你可以,我会在我的笔记本上检查后尝试回答这个问题。
    • 谢谢!如果你能展示我如何从 y_pred 中选择一个值,那也会很有帮助。所以简单举个例子,我希望能够检查最高值,假设每 10 个点,然后找到那个损失
    猜你喜欢
    • 2018-10-28
    • 2017-12-29
    • 1970-01-01
    • 2019-11-28
    • 2020-12-19
    • 2017-12-18
    • 2020-03-27
    • 1970-01-01
    • 2021-03-11
    相关资源
    最近更新 更多