#python #tensorflow #keras #libraries
#python #tensorflow #keras #библиотеки
Вопрос:
Я хотел бы запустить новые процедуры tensorflow, такие как:
from tensorflow.keras.preprocessing import image_dataset_from_directory
для чего я получаю ошибку в 1.x:
Ошибка импорта: не удается импортировать имя image_dataset_from_directory
при сохранении более старой функциональности 1.x, например, запуск процедуры для просмотра активаций в различных слоях, таких как:
K=tf.keras.backend
func = K.function([base_model.input, K.learning_phase()],[layer.output for layer in base_model.layers if layer.output is not base_model.input])
для чего я получаю следующую ошибку в tf 2.x:
Ошибка значения: входные тензоры для функционала должны поступать из tf.keras.Input
. Получено: 0 (отсутствуют метаданные предыдущего уровня).
Код:
import tensorflow as tf
from tensorflow.keras.preprocessing import image_dataset_from_directory
IMG_SHAPE = (160, 160) (3,)
base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE,
include_top=False,
weights='imagenet')
K=tf.keras.backend
func = K.function([base_model.input, K.learning_phase()],[layer.output for layer in base_model.layers if layer.output is not base_model.input])
Документация, на которую я смотрел, предполагает, что проблема может иметь какое-то отношение к режиму активных вычислений, например https://github.com/tensorflow/tensorflow/issues/34201
Но я не могу понять, как это решить. Спасибо за предложения!
Ответ №1:
Как было предложено #34201, просто отключите быстрое выполнение и запустите остальную часть вашего кода
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
from tensorflow.keras.preprocessing import image_dataset_from_directory
IMG_SHAPE = (160, 160) (3,)
base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE,
include_top=False,
weights='imagenet')
K=tf.keras.backend
func = K.function([base_model.input, K.learning_phase()],[layer.output for layer in base_model.layers if layer.output is not base_model.input])