自定义了一个损失函数 报错显示没有可获得梯度:
def R_lab_enmin(y_true, y_pred):
y_true = tf.cast(y_true, dtype=tf.float32)
out = tf.clip_by_value(y_true, -10, 10)
y_pred = tf.sigmoid(out)
loss1 = Rlab_loss1(y_true, y_pred) # Rlab损失
# 熵最小化损失
y_true, y_pred = tf.reshape(y_true, (len(y_true),)), tf.reshape(y_pred, (len(y_pred),))
scores = tf.gather(y_pred, tf.where(y_true != 1))
loss2 = -tf.reduce_mean(scores * tf.math.log(scores) + (1 - scores) * tf.math.log(1 - scores))
loss=loss1 + 0.004 * loss2
return loss
ValueError: No gradients provided for any variable: ['dense/kernel:0', 'dense/bias:0', 'batch_normalization/gamma:0', 'batch_normalization/beta:0', 'dense_1/kernel:0', 'dense_1/bias:0', 'batch_normalization_1/gamma:0', 'batch_normalization_1/beta:0', 'dense_2/kernel:0', 'dense_2/bias:0', 'batch_normalization_2/gamma:0', 'batch_normalization_2/beta:0', 'dense_3/kernel:0', 'dense_3/bias:0', 'batch_normalization_3/gamma:0', 'batch_normalization_3/beta:0', 'dense_4/kernel:0', 'dense_4/bias:0'].