В моем недавнем проекте, когда я обновил Tensorflow до последней версии, я обнаружил две ошибки при запуске проекта. Modulenotfounderror нет модуля с именем «tensorflow.keras.layers.embeddings»,  «TensorFlow.keras.applications.ResNet ‘ и ‘tensorflow.keras.layers.recurrent.

Modulenotfounderror: это модуль ошибок, который может вызвать два других типа ошибок: Modulenotfounderror нет модуля с именем «tensorflow.keras.layers.embeddings» и  «tensorflow.keras.layers.recurrent».

Решение обеих ошибок приведено ниже.

Содержание

Модуль tensorflow.keras.layers

Ошибка означает, что Python не может найти подмодуль tensorflow.keras.layers.embeddings.

Причин этой ошибки может быть несколько — возможно, вы импортируете подмодуль по неправильному пути. Или вы только что обновили Tensorflow до последней версии, а этот подмодуль устарел или переехал в другое место.

Позвольте мне показать один из способов возникновения этой ошибки при импорте встраивания, как показано ниже.

 из tensorflow.keras.layers.embeddings import Embedding

Устранение ошибки

Посмотрите, ошибка возникает, когда вы импортируете встраивание таким образом.

Чтобы устранить эту ошибку, вместо импорта внедрения из tensorflow.keras.layers.embedding просто импортируйте его из tensorflow.keras.layers, как показано ниже.

from tensorflow.keras.layers import Embedding

print(Embedding)

Ошибка Modulenotfounderror не отображается

Как видите, ошибка Modulenotfounderror не отображается. Ни один модуль больше не называется «tensorflow.keras.layers.embeddings».

Встраивание в TensorFlow:

  • Плотный вектор значений с плавающей запятой — это встраивание(длина вектора — это указанный вами параметр). Значения внедрения представляют собой обучаемые параметры, а не заданные вручную(веса, полученные моделью во время обучения, точно так же, как модель изучает веса для плотного слоя).
  • Функция Embedding() преобразует индексы положительных чисел в плотные векторы.

Синтаксис:

 tf.keras.layers.Embedding(
 вход_дим,
 вывод_дим,
 embeddings_initializer='униформа',
 embeddings_regularizer = Нет,
 Activity_regularizer = Нет,
 embeddings_constraint = Нет,
 маска_ноль = Ложь,
 input_length = Нет,
 **кварги
 )

Где он состоит из нескольких параметров:

  • input_dim: размер словаря, выраженный как максимальный целочисленный индекс +1.
  • output_dim: этот параметр определяет целочисленное значение и представляет размеры плотного внедрения.
  • embeddings_initializer: это инициализатор матрицы внедрения.
  • Mask_zero: логическое значение, указывающее, является ли входное значение 0 уникальным значением «заполнения», которое необходимо скрыть. Это помогает использовать повторяющиеся слои, которые могут принимать входные данные различной длины.
  • Если это так, будет выдано исключение, и все последующие слои модели должны будут поддерживать маскирование. Если для параметра Mask_zero установлено значение True, индекс 0 нельзя использовать в словаре(входное значение dim должно равняться размеру словаря плюс 1).

Пример:

 импортировать тензорный поток как tf
 импортировать numpy как np
 новая_модель = tf.keras.Sequential()
 new_model.add(tf.keras.layers.Embedding(1000, 64,input_length=10))

 random_num = np.random.randint(1000, размер=(32, 10))
 new_model.compile('rmsprop', 'mse')
 new_result = new_model.predict(random_num)
 печать(new_result.shape) 

Полное решение ошибки

Из вывода приведенного выше кода вы можете увидеть, как правильно импортировать и использовать функцию Embedding().

Модуль tensorflow.keras.layres.recurren

Ошибка означает, что Python не может найти модуль tensorflow.keras.layres.recurrent. Причина в том, что вы указали неправильное местоположение модуля или обновили Tensorflow до последней версии, и модель переместилась в другое место.

Позвольте мне показать вам, как вы пришли к этой ошибке.

 из tensorflow.keras.layers.recurrent import LSTM

Причины ошибки

Посмотрите, когда вы пытаетесь импортировать LSTM из модуля tensorflow.keras.layers.recurrent, он показывает ошибку.

Чтобы устранить эту ошибку, убедитесь, что вы обновили тензорный поток до последних версий и используете приведенный ниже код для импорта LSTM.

from tensorflow.keras.layers import LSTM

print(LSTM)

В выходных данных отображается ошибка модуля notfounderror

Как вы можете видеть выше, в выходных данных отображается ошибка модуля notfounderror без модуля с именем «tensorflow.keras.layers.recurrent.

В последней версии tensorflow модуль tensorflow.keras.layers.recurrent изменен на tensorflow.keras.layers.

Теперь давайте посмотрим полное решение для импорта и использования слоя LSTM из модуля.

 импортировать тензорный поток как tf

 модель = tf.keras.Sequential([
 tf.keras.layers.LSTM(units=64, input_shape=(10, 32)),
 tf.keras.layers.Dense(единицы = 1, активация = 'сигмовидная')
 ])

 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

 импортировать numpy как np
 x_train = np.random.random((100, 10, 32))
 y_train = np.random.randint(2, size=(100, 1))


 model.fit(x_train, y_train, эпох = 10, Batch_size = 32)

Как правильно импортировать и использовать функцию LSTM

Из вывода приведенного выше кода вы можете увидеть, как правильно импортировать и использовать функцию LSTM из подмодуля tensorflow.keras.layers.

 Модуль TensorFlow.keras.applications.ResNet

Опять же, вы пытаетесь импортировать несуществующий модуль TensorFlow.keras.applications.ResNet или переместить его в другое место.

По той же причине вы обновили TensorFlow, и подмодуль переместился в другое место внутри TensorFlow, или вы указали неверный путь, или он может устареть.

Когда вы импортируете этот подмодуль вот так, как показано ниже.

Модуль TensorFlow.keras.applications.ResNet

Чтобы устранить эту ошибку, необходимо изменить способ импорта ResNet.

Попробуйте этот метод импорта, как показано ниже.

from tensorflow.keras.applications import resnet

Импортирт Resnet

Посмотрите, вы успешно импортировали Resnet, не получив никаких ошибок, таких как Modulenotfounderror, нет модуля с именем «TensorFlow.keras.applications.resnet».

  • Здесь сверточные нейронные сети(CNN) с ResNet используются для таких приложений, как распознавание изображений.

Если вы не хотите импортировать таким образом, вы понизите версию tensorflow до tensorflow=2.7. Вы можете выполнить команду ниже в своем терминале или среде.

Сначала удалите текущую версию tensorflow.

pip uninstall tensorflow
!pip unistall tensorlfow // For Jupyter Notebook

Затем установите версию 2.7, используя команду ниже.

pip install tensorflow==2.7
!pip install tensorflow==2.7 // For Jupyter Notebook

После выполнения вышеуказанных шагов вы можете использовать старый метод для импорта.

Теперь позвольте мне показать вам полный пример импорта и использования resnet в tensorflow.

Вот полное решение ошибки, а это значит, что вы не получите ошибку.

 импортировать керас
 импортировать keras.applications.resnet
 из keras.applications.resnet импортировать ResNet50
 модель = ResNet50(include_top = True, Weights = 'imagenet', input_tensor = None, input_shape = None)
 модель.сводка()

Как правильно импортировать и использовать функцию ResNet50

Из вывода приведенного выше кода вы можете увидеть, как правильно импортировать и использовать функцию ResNet50.

Заключение

В этом руководстве по тензорному потоку вы узнали, как устранить ошибку, связанную с Modulenotfounderror(нет модуля с именем «tensorflow.keras.layers»).

Вы устранили три типа ошибок: Modulenotfounderror нет модуля с именем «tensorflow.keras.layers.embeddings», Modulenotfounderror нет модуля с именем «TensorFlow.keras.applications.ResNet» и Modulenotfounderror нет модуля с именем «tensorflow.keras.layers.recurrent».

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

Добавить комментарий