В моем недавнем проекте, когда я обновил 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
- Модуль tensorflow.keras.layres.recurren
- Модуль TensorFlow.keras.applications.ResNet
- Заключение
Модуль 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 не отображается. Ни один модуль больше не называется «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 без модуля с именем «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 из подмодуля tensorflow.keras.layers.
Модуль TensorFlow.keras.applications.ResNet
Опять же, вы пытаетесь импортировать несуществующий модуль TensorFlow.keras.applications.ResNet или переместить его в другое место.
По той же причине вы обновили TensorFlow, и подмодуль переместился в другое место внутри TensorFlow, или вы указали неверный путь, или он может устареть.
Когда вы импортируете этот подмодуль вот так, как показано ниже.
Чтобы устранить эту ошибку, необходимо изменить способ импорта ResNet.
Попробуйте этот метод импорта, как показано ниже.
from tensorflow.keras.applications import 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.
Заключение
В этом руководстве по тензорному потоку вы узнали, как устранить ошибку, связанную с Modulenotfounderror(нет модуля с именем «tensorflow.keras.layers»).
Вы устранили три типа ошибок: Modulenotfounderror нет модуля с именем «tensorflow.keras.layers.embeddings», Modulenotfounderror нет модуля с именем «TensorFlow.keras.applications.ResNet» и Modulenotfounderror нет модуля с именем «tensorflow.keras.layers.recurrent».
Кроме того, благодаря полному решению каждой ошибки вы научились правильно импортировать и использовать модуль.