【问题标题】:AttributeError:: 'module' object has no attribute 'SparseCategoricalCrossentropy'AttributeError:: 'module' 对象没有属性 'SparseCategoricalCrossentropy'
【发布时间】:2021-01-15 14:08:12
【问题描述】:

标题中的错误代码如下。我用谷歌搜索了几次,但可以找出原因:

class MyLinearModel(Model):
def __init__(self):
    super(MyLinearModel, self).__init__()
    self.flatten = Flatten()
    self.d1 = Dense(10, activation='softmax', name="dense1")

def call(self, x):
    x = self.flatten(x)
    return self.d1(x)

model = MyLinearModel()

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.SGD()

...

我收到以下错误:

 AttributeError: 'module' object has no attribute 'SparseCategoricalCrossentropy'

【问题讨论】:

  • tf.__version__ 的输出是什么?
  • tf.__version__ 是 1.12.0
  • 您需要升级 tensorflow 才能使用它。到 1.15 或 2.x。
  • 如果我无法升级到 tensorflow2,那么在 tensorflow1 中是否有等效的 SparseCategoricalCrossentropy

标签: python tensorflow keras attributeerror


【解决方案1】:

我能找到的具有类似功能的最旧版本是 1.13,这是链接https://github.com/tensorflow/docs/blob/r1.13/site/en/api_docs/python/tf/keras/losses/CategoricalCrossentropy.md

它确实需要 one-hot 编码目标,而不是只传递表示索引的整数。

您会在 Tensorflow 1.15.0 中找到您正在寻找的相同功能,这里是文档的链接https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/keras/losses/SparseCategoricalCrossentropy

如果您打算使用 GPU 版本,这两个版本都需要 CUDA 10.0。

这里是 tensorflow-gpu 安装文档的链接https://www.tensorflow.org/install/gpu#install_cuda_with_apt

顺便说一句,当您想查看 python 中某个模块的内容时,只需调用其内置的 help() 函数即可。在您的情况下,您可以提供帮助(tf.keras.losses),在大多数情况下,它可能会提供一些见解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2022-12-20
    • 2018-01-14
    • 2014-08-15
    • 2016-07-17
    • 2015-05-26
    • 2016-02-07
    相关资源
    最近更新 更多