Нет модуля с именем «keras.backend.tensorflow_backend»

#python #tensorflow #keras #bert-language-model

Вопрос:

Я пытаюсь извлечь уроки из сценария python для семантического поиска, который использует трансформатор предложений-BERT, При компиляции этого файла сценария python ( semantic_search.py ) я столкнулся со следующей ошибкой:

 Traceback (most recent call last):
  File "semantic_search.py", line 6, in <module>
    import keras.backend.tensorflow_backend as tb
ModuleNotFoundError: No module named 'keras'
 

Пожалуйста, укажите возможный источник ошибок и исправлений.

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

1. Вы установили пакет keras?

Ответ №1:

Это проблема с версиями keras и tensorflow. Похоже, что этот учебник был написан до того, как keras стал частью tensorflow. Для получения дополнительной информации о том, почему это произошло и какую версию вам следует использовать, см. Эту статью.

Вероятно , вам нужно будет изменить любой импорт в сценарии, который начинается с keras tensorflow.keras , если у вас tensorflow версии 2.0 и выше. Так что конкретно для этой строки вы, вероятно, захотите:

 import tensorflow.keras.backend as tb
 

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

1. Ваше первое утверждение неверно, код, похоже, использует keras, а не tf.keras, почему не важно. Также обратите внимание, что tf.keras возвращается к самостоятельному пакету keras.

2. Можете ли вы предоставить ссылку в поддержку заявления о том, что keras возвращается к самостоятельному пакету keras? Это новость для меня, я хотел бы быть в курсе этого, если это правильно. Спасибо.

3. Это было упомянуто в README репо keras: github.com/keras-team/keras/commit/…

4. Но в целом я не думаю, что слепой переход с keras на tf.keras является хорошим решением, так как вы не знаете, будут ли дополнительные изменения или побочные эффекты. Кроме того, код может просто не работать.

5. Я попробовал команду «импортировать серверную часть tensorflow.keras.как tb», но она выдает другую ошибку-используя серверную часть TensorFlow. Обратная связь (последний последний вызов): Файл «semantic_search.py», строка 15, в <модуле> tb._SYMBOLIC_SCOPE.значение = True Ошибка атрибута: модуль «tensorflow.keras.серверная часть» не имеет атрибута «_SYMBOLIC_SCOPE»