想要成为一个合格的码农 2023-03-08 18:40 采纳率: 33.3%
浏览 20

自定义损失函数时,显示没有梯度

自定义了一个损失函数 报错显示没有可获得梯度:

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'].

  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-03-08 18:42
    关注

    “Devil组”引证GPT后的撰写:

    • 这个错误通常表示TensorFlow无法计算损失函数的梯度。这可能是由于损失函数中使用了不可微分的操作或没有正确设置梯度计算方式等原因引起的。
    • 在这个特定的例子中,你可能需要检查损失函数R_lab_enmin中的Rlab_loss1和tf.clip_by_value操作是否可微分,如果不可微分,则需要将它们替换为可微分的操作或使用其它方式实现该操作。
    • 此外,你也可以尝试显式指定梯度计算方式,比如使用tf.GradientTape或设置损失函数的可训练变量。

    例如,你可以将损失函数定义为:

    def R_lab_enmin(y_true, y_pred):
        y_true = tf.cast(y_true, dtype=tf.float32)
        with tf.GradientTape() as tape:
            tape.watch(y_pred)
            out = tf.clip_by_value(y_true, -10, 10)
            y_pred = tf.sigmoid(out)
            loss1 = Rlab_loss1(y_true, 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
        gradients = tape.gradient(loss, y_pred)
        return loss, gradients
    
    
    

    然后在训练时调用该函数并传递梯度到优化器中。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥30 为什么会失败呢,该如何调整
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析