【发布时间】:2021-01-07 20:36:44
【问题描述】:
我在 Keras 中创建了一个自定义损失函数,如下所示:
import tensorflow as tf
import numpy as np
def custom_loss(y_true, y_pred):
cce = tf.keras.losses.CategoricalCrossentropy()
loss = cce(y_true, y_pred).numpy()
epsilon = np.finfo(np.float32).eps
confidence = np.clip(y_true.numpy(), epsilon, 1.-epsilon)
sample_entropy = -1. * np.sum(np.multiply(confidence, np.log(confidence) / np.log(np.e)), axis=-1)
entropy = np.mean(sample_entropy)
penalty = 0.1 * -entropy
return loss + penalty
当我使用这个自定义损失函数时,我收到了错误消息
ValueError: 没有为任何变量提供渐变
现在可以通过某种方式计算梯度。需要如何改变损失函数才能计算梯度?
【问题讨论】:
标签: python machine-learning keras tensorflow2.0 tf.keras