【问题标题】:Get values of tensors in loss function获取损失函数中张量的值
【发布时间】:2019-01-24 21:12:43
【问题描述】:

我想得到这个keras backend functiony_predy_true 张量的值。我需要它才能执行一些自定义计算并更改损失,这些计算仅适用于真实的数组值。

def mean_squared_error(y_true, y_pred):
    #some code here
    return K.mean(K.square(y_pred - y_true), axis=-1)

有没有办法在 keras 中做到这一点?或者在任何其他 ML 框架(tf、pytorch、theano)中?

【问题讨论】:

    标签: tensorflow keras deep-learning theano pytorch


    【解决方案1】:

    尝试将其包含在损失函数中: y_true = keras.backend.print_tensor(y_true, message='y_true')

    以下是 Keras 文档 (https://keras.io/backend/) 的摘录:

    打印张量 keras.backend.print_tensor(x, message='') 评估时打印消息和张量值。

    请注意 print_tensor 返回一个与 x 相同的新张量,该张量应在代码的后面部分中使用。否则,在评估期间不考虑打印操作。

    【讨论】:

      【解决方案2】:

      不,一般情况下,您无法以这种方式计算损失,因为 Keras 基于执行自动微分的框架(如 Theano、TensorFlow),它们需要知道您在两者之间执行哪些操作才能计算损失的梯度。

      您需要使用keras.backend 函数来实现损失计算,否则无法计算梯度并且无法进行优化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-03
        • 2017-09-02
        • 2019-02-11
        • 2020-01-08
        • 1970-01-01
        • 2018-09-18
        • 2019-07-28
        相关资源
        最近更新 更多