【发布时间】:2020-10-14 11:32:10
【问题描述】:
我正在尝试在 TF 2.2 中实现来自 this paper 的损失函数(TensorFlow 1.10.1 中的现有版本,由论文作者制作,可以在 here 找到)。
但是,损失函数的理论细节与我的问题无关。
我的损失函数:
def z_score_based_deviation_loss(y_true, y_pred):
confidence_margin = 5.0
ref = K.variable(np.random.normal(loc=0., scale=1.0, size=5000), dtype='float32')
dev = (y_pred - K.mean(ref)) / K.std(ref)
inlier_loss = K.abs(dev)
outlier_loss = K.abs(K.maximum(confidence_margin - dev, 0.))
return K.mean((1 - y_true) * inlier_loss + y_true * outlier_loss)
调用方式:
model.compile(optimizer='adam', loss=z_score_based_deviation_loss)
我收到了这个错误:
ValueError: tf.function-decorated function tried to create variables on non-first call.
我知道关于这个主题还有其他问题,但我没有找到任何与 Keras 中的自定义损失函数相关的问题。 我不知道如何适应它。
另外,根据我的阅读,当函数被标记为@tf.function 时应该存在问题(无论如何建议加快计算速度),但我没有添加它......
【问题讨论】:
标签: tensorflow keras loss-function valueerror tensorflow2.x