【问题标题】:Custom loss function with gradient带梯度的自定义损失函数
【发布时间】:2020-05-14 03:39:29
【问题描述】:

我创建了一个自定义损失函数,它还计算真实标签和预测标签的梯度之间的均方误差。函数如下。但是,在调试代码时,我发现 uxp 和 uxt 是列表而不是张量。我在计算梯度时是否犯了任何错误?

def custom_mean_squared_error(y_true, y_pred):
    mse = K.mean(K.square(y_pred - y_true), axis=-1)

    # gradient
    xs = tf.ones_like(y_pred)
    uxp = tf.gradients(y_pred, xs)
    uxt = tf.gradients(y_true, xs)
    grad_mse = K.mean(K.square(uxp - uxt), axis=-1)

    mse1 = mse + grad_mse
    return mse1

谢谢。

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    是的,在 Python 中不能减去列表(尝试 [1,2,3] - [-1,-2,-3])。是的,tf.gradients 应该返回张量列表(参见文档https://www.tensorflow.org/api_docs/python/tf/gradients)。您可以尝试使用列表推导来实现减法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-24
      • 2021-10-26
      • 2021-03-11
      • 2019-07-31
      • 2020-03-06
      • 2019-05-30
      • 2016-11-29
      • 2019-12-06
      相关资源
      最近更新 更多