Keras 中的自定义损失函数 - 遍历 TensorFlow

Posted

技术标签:

【中文标题】Keras 中的自定义损失函数 - 遍历 TensorFlow【英文标题】:Custom Loss Function in Keras - Iterate through 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 等等...

【问题讨论】:

【参考方案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 个点,然后找到那个损失

以上是关于Keras 中的自定义损失函数 - 遍历 TensorFlow的主要内容,如果未能解决你的问题,请参考以下文章

图像分割 - Keras 中的自定义损失函数

R Keras 中的自定义损失函数

Keras 中的自定义损失函数以惩罚假阴性

Keras 中的自定义损失函数应该返回批次的单个损失值还是训练批次中每个样本的一系列损失?

Keras 中基于输入数据的自定义损失函数

Keras 上的自定义损失函数