Ошибка OS: файл SavedModel не существует при использовании его в скрипте Python, тогда как он работает в лаборатории Jup ⇐ Python
-
Anonymous
Ошибка OS: файл SavedModel не существует при использовании его в скрипте Python, тогда как он работает в лаборатории Jup
Я использую модель из этого примера keras https://keras.io/examples/timeseries/ti ... recasting/, чтобы прогнозировать трафик на основе графовой нейронной сети и LSTM.
Моя среда следующая: VSCode 1.85.1, python 3.11.5, tensorflow 2.15, keras 2.15 и windows 11.
В начале, когда я импортировал предыдущий код в свою среду conda, в лаборатории Jupyter, у меня возникла ошибка ImportError: невозможно импортировать имя «ops» из «keras». Итак, я не использовал пакет ops из keras, а заменил его операциями tf, например tf.concat или tf.matmul. Тогда я мог бы обучить свою модель.
Чтобы правильно сохранить его с помощью метода save_model из tensorflow.keras.models, я определил get_config и from_config > для каждого из моих пользовательских слоев и добавьте декоратор @keras.saving.register_keras_serializable(package="..."). Я сохранил свою модель с помощью:
model_15_epochs = "./saved_models/model_1_annee_15_epochs.keras" save_model(модель, model_15_epochs) Все работало нормально, так как я мог загрузить модель с помощью load_model из tensorflow.keras.models, чтобы сделать пару прогнозов с другими данными, кроме моего обучения, проверки и теста. .
custom_objects = {"Активация": Layers.Activation, "GraphConv": GraphConv, "GraphInfo": GraphInfo, "LSTMGC": LSTMGC} model_loaded_15_epochs = load_model(model_15_epochs, custom_objects=custom_objects) Затем я попытался развернуть процесс прогнозирования в скрипте Python, и когда я захотел загрузить модель, я получил эту ошибку: OSError: файл SavedModel не существует по адресу: .\saved_models\model_1_annee_15_epochs.keras\{ save_model.pbtxt|saved_model.pb
Я проверил, что мой интерпретатор Python в VSCode — это та же среда conda, которую я использовал в лаборатории Jupyter, увидел эту ссылку, но не уверен, что у меня тот же случай, потому что я все еще могу загрузить свою модель в Jupyter. Более того, я вижу файл model_1_annee_15_epochs.keras в проводнике VSCode моей папки.
Откуда возникает эта ошибка и как ее устранить?
ОБНОВЛЕНИЕ
Вот код простой модели, который выдает ту же ошибку (поэтому проблема может быть не в моей модели). Еще раз: отлично работает в лаборатории Jupyter, а не в скрипте Python:
импортировать тензорный поток как tf импортировать numpy как np из tensorflow.keras.models импортировать последовательный из tensorflow.keras.layers import Dense из tensorflow.keras.models импорт save_model, load_model модель = Последовательный() model.add(Dense(64, input_dim=10, активация='relu')) model.add(Dense(32, активация='relu')) model.add(Dense(1, активация='сигмовидная')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) данные = np.random.random((1000, 10)) labels = np.random.randint(2, size=(1000, 1)) model.fit(данные, метки, эпохи = 10, пакет_размер = 32) rel_path_model = ".\saved_models\model_test.keras" save_model(модель, rel_path_model) loading_model = load_model(rel_path_model) #ОК в Jupyter, но не в скрипте
Я использую модель из этого примера keras https://keras.io/examples/timeseries/ti ... recasting/, чтобы прогнозировать трафик на основе графовой нейронной сети и LSTM.
Моя среда следующая: VSCode 1.85.1, python 3.11.5, tensorflow 2.15, keras 2.15 и windows 11.
В начале, когда я импортировал предыдущий код в свою среду conda, в лаборатории Jupyter, у меня возникла ошибка ImportError: невозможно импортировать имя «ops» из «keras». Итак, я не использовал пакет ops из keras, а заменил его операциями tf, например tf.concat или tf.matmul. Тогда я мог бы обучить свою модель.
Чтобы правильно сохранить его с помощью метода save_model из tensorflow.keras.models, я определил get_config и from_config > для каждого из моих пользовательских слоев и добавьте декоратор @keras.saving.register_keras_serializable(package="..."). Я сохранил свою модель с помощью:
model_15_epochs = "./saved_models/model_1_annee_15_epochs.keras" save_model(модель, model_15_epochs) Все работало нормально, так как я мог загрузить модель с помощью load_model из tensorflow.keras.models, чтобы сделать пару прогнозов с другими данными, кроме моего обучения, проверки и теста. .
custom_objects = {"Активация": Layers.Activation, "GraphConv": GraphConv, "GraphInfo": GraphInfo, "LSTMGC": LSTMGC} model_loaded_15_epochs = load_model(model_15_epochs, custom_objects=custom_objects) Затем я попытался развернуть процесс прогнозирования в скрипте Python, и когда я захотел загрузить модель, я получил эту ошибку: OSError: файл SavedModel не существует по адресу: .\saved_models\model_1_annee_15_epochs.keras\{ save_model.pbtxt|saved_model.pb
Я проверил, что мой интерпретатор Python в VSCode — это та же среда conda, которую я использовал в лаборатории Jupyter, увидел эту ссылку, но не уверен, что у меня тот же случай, потому что я все еще могу загрузить свою модель в Jupyter. Более того, я вижу файл model_1_annee_15_epochs.keras в проводнике VSCode моей папки.
Откуда возникает эта ошибка и как ее устранить?
ОБНОВЛЕНИЕ
Вот код простой модели, который выдает ту же ошибку (поэтому проблема может быть не в моей модели). Еще раз: отлично работает в лаборатории Jupyter, а не в скрипте Python:
импортировать тензорный поток как tf импортировать numpy как np из tensorflow.keras.models импортировать последовательный из tensorflow.keras.layers import Dense из tensorflow.keras.models импорт save_model, load_model модель = Последовательный() model.add(Dense(64, input_dim=10, активация='relu')) model.add(Dense(32, активация='relu')) model.add(Dense(1, активация='сигмовидная')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) данные = np.random.random((1000, 10)) labels = np.random.randint(2, size=(1000, 1)) model.fit(данные, метки, эпохи = 10, пакет_размер = 32) rel_path_model = ".\saved_models\model_test.keras" save_model(модель, rel_path_model) loading_model = load_model(rel_path_model) #ОК в Jupyter, но не в скрипте