Если вы столкнулись с такими ошибками, как Modulenotfounderror: нет модуля с именем «tensorflow.keras.utils.np_utils», я объясню, как устранить эту ошибку с помощью тензорного потока и платформы Keras.
tensorflow.keras.utils.np_utils
Ошибка Modulenotfounderror no Module с именем «tensorflow.keras.utils.np_utils» означает, что вы пытаетесь импортировать модуль tensorflow.keras.utils.np_utils, который либо не существует, либо был перемещен в используемую вами версию Tensorflow.
Если вы используете TensorFlow версии 1.x, вы можете не получить эту ошибку, но если вы используете тот же код и обновляете TensorFlow до последней версии, например 2.x, вы получите ошибку.
Причина этой ошибки заключается в том, что в версии tensorflow 2.x многие модули или функции были реорганизованы или перемещены, поэтому способ их импорта изменился по сравнению с версией tensorflow 1.x.
np_utils используется для категориального кодирования, например преобразования векторов классов в двоичные матрицы классов.
Например, вы получите сообщение об ошибке, если попытаетесь импортировать модуль, как показано ниже.
import tensorflow.keras.utils.np_utils
Теперь вы можете увидеть ошибку. Приведенный выше импорт является лишь примером того, как может возникнуть ошибка. Итак, если вы получаете ту же ошибку, существует два подхода к ее устранению.
Начнем с первого: используйте функцию to_categorical непосредственно из tensorflow.keras.utils, а не из np_utils.
Небольшой пример приведен ниже.
from tensorflow.keras.utils import to_categorical y_data = [2, 5, 7, 1] y_binary_data = to_categorical(y_data) print(y_binary_data)
Успешно импортировал to_categorical и преобразовал класс в категориальный.
Далее этот подход предполагает использование библиотеки Keras. Опять же, не используйте np_utils напрямую, импортируйте to_categorical из keras.utils, как показано ниже.
from keras.utils import to_categorical y_class = [2, 5, 7, 1] y_binary = to_categorical(y_class) print(y_binary)
Импортирован метод to_catgorical() из keras.utils вместо использования np_utils. Всегда устанавливайте последнюю версию платформы, например TensorFlow, и в случае возникновения ошибки проверьте, не устарел ли метод или модуль.
Синтаксис приведен ниже.
tf.keras.utils.to_categorical( y, num_classes=None, dtype='float32' )
- Он состоит из нескольких параметров
- y: целые числа от 0 до num. Классы – 1 находятся в структуре, напоминающей массив, которая будет преобразована в матрицу.
- num_classes: количество объединенных классов. Если None, это подразумевается как max(y) + 1.
- dtype: по умолчанию он принимает float32 и определяет тип данных.
Теперь давайте посмотрим на пример:
import tensorflow as tf from tensorflow.keras.utils import to_categorical based_code = tf.keras.utils.to_categorical([1, 0, 2, 3], num_classes=4) b_code = tf.constant(based_code, shape=[4, 4]) print(b_code)
В следующем коде мы сначала импортировали импорт tensorflow.keras.utils в to_categorical. Затем объявили переменную «based_code» и использовали функцию tf.keras.utils.to_categorical(), преобразующую заданный список значений в двоичную матрицу.
Заключение
Используя два метода, вы узнали, как устранить ошибку Modulenotfounderror no Module с именем «tensorflow.keras.utils.np_utils».
В первом методе вы узнали, как использовать TensorFlow для устранения этой ошибки, импортировав функцию to_categorical() из tensorflow.keras.utils.
Затем во втором методе функция to_categorical() была импортирована из keras.utils, и класс был преобразован в двоичные данные.