【问题标题】:'tensorflow.python.keras.api._v1.keras.losses' has no attribute 'Reduction''tensorflow.python.keras.api._v1.keras.losses' 没有属性 'Reduction'
【发布时间】:2022-02-18 14:15:45
【问题描述】:

我在 tensorflow 1.14.0 的 tf.keras 中使用 Huber loss 实现如下:

huber_keras_loss = tf.keras.losses.Huber(
        delta=delta,
        reduction=tf.keras.losses.Reduction.SUM,
        name='huber_loss'
    )

我收到了错误 AttributeError:模块'tensorflow.python.keras.api._v1.keras.losses'没有属性'Reduction'

我尝试过使用 tf.losses.Reduction、tf.compat.v2.losses.Reduction 似乎没有任何效果。

tensorflow 是否从 tf.keras.losses 中删除了 Reduction,如果他们这样做很奇怪,因为他们的文档仍然显示: https://www.tensorflow.org/versions/r1.14/api_docs/python/tf/keras/losses/Huber#args

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    更换

    tf.keras.losses.Reduction
    

    tf.compat.v1.losses.Reduction
    

    在 TensorFlow 1.14.0 中为我解决了这个问题

    【讨论】:

      【解决方案2】:

      我在安装 tensorflow 1.14.0 时遇到了类似的问题。我所做的就是升级 tensorflow,这似乎让我恢复到 1.12.0。

          pip install --upgrade tensorflow
      

      【讨论】:

        【解决方案3】:

        当我收到类似的错误时,应用tf.compat.v1. 通常会起作用。

        这是我应用它的具体功能:

        tf.compat.v1.losses.sparse_softmax_cross_entropy(labels=labels, logits=output)
        

        我也将它应用到了类似的功能上,并且效果很好。

        【讨论】:

          猜你喜欢
          • 2019-09-09
          • 2020-06-25
          • 1970-01-01
          • 2022-11-28
          • 2018-08-09
          • 1970-01-01
          • 2012-12-01
          • 1970-01-01
          • 2011-04-14
          相关资源
          最近更新 更多