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的主要内容,如果未能解决你的问题,请参考以下文章