AttributeError:: объект ‘module’ не имеет атрибута ‘SparseCategoricalCrossentropy’

#python #tensorflow #keras #attributeerror

#python #тензорный поток #keras #ошибка атрибута

Вопрос:

Код ошибки в заголовке приведен ниже. Я несколько раз гуглил, но смог выяснить, в чем причины:

 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'
  

Комментарии:

1. Что является результатом tf.__version__ ?

2. tf.__версия __ равна 1.12.0

3. Вам нужно будет обновить tensorflow, чтобы использовать это. Либо к 1.15, либо к 2.x.

4. если я не могу перейти на tensorflow2, есть ли эквивалент в tensorflow1 для SparseCategoricalCrossentropy

Ответ №1:

Самая старая версия, которую я смог найти с аналогичной функцией, — 1.13, вот ссылка https://github.com/tensorflow/docs/blob/r1.13/site/en/api_docs/python/tf/keras/losses/CategoricalCrossentropy.md

Для этого требуются цели с одноразовым кодированием вместо передачи только целых чисел, представляющих индексы.

Вы найдете ту же функцию, которую ищете в Tensorflow 1.15.0, вот ссылка на документацию https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/keras/losses/SparseCategoricalCrossentropy

Для обеих версий требуется CUDA 10.0, если вы планируете использовать версию GPU.

Вот ссылка на документы для установки tensorflow-gpu https://www.tensorflow.org/install/gpu#install_cuda_with_apt

Просто в качестве примечания, когда вы когда-нибудь захотите посмотреть, каково содержимое определенного модуля в python, просто вызовите встроенную функцию help() для него. В вашем случае вы могли бы помочь (tf.keras.losses), по большей части, это может дать некоторое представление.