Как сказал @Shinva, чтобы установить атрибут "compile" функции load_model на "False".Затем после загрузки модели скомпилируйте ее отдельно.
from tensorflow.keras.models import save_model, load_model
save_model(model,'124446.model')
Затем для загрузки модели снова выполните:
saved_model = load_model('124446.model', compile=False)
saved_model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
saved_model.predict([x_test])
Обновление : по некоторым неизвестным причинам яначали получать те же ошибки, что и вопрос состояния.После попытки найти разные решения кажется, что использование библиотеки «keras» напрямую вместо tenorsflow.keras работает нормально.
Моя установка на «Windows 10» с python: «3.6.7», tenenflow: «1.11.0» и keras: «2.2.4»
Насколько я знаю, тамтри разных способа сохранения и восстановления вашей модели;при условии, что вы использовали керас непосредственно для изготовления своей модели.
Опция 1:
import json
from keras.models import model_from_json, load_model
# Save Weights + Architecture
model.save_weights('model_weights.h5')
with open('model_architecture.json', 'w') as f:
f.write(model.to_json())
# Load Weights + Architecture
with open('model_architecture.json', 'r') as f:
new_model = model_from_json(f.read())
new_model.load_weights('model_weights.h5')
Опция 2:
from keras.models import save_model, load_model
# Creates a HDF5 file 'my_model.h5'
save_model(model, 'my_model.h5') # model, [path + "/"] name of model
# Deletes the existing model
del model
# Returns a compiled model identical to the previous one
new_model = load_model('my_model.h5')
Опция 3
# using model's methods
model.save("my_model.h5")
# deletes the existing model
del model
# load the saved model back
new_model = load_model('my_model.h5')
Опция 1 требует, чтобы new_model был скомпилирован перед использованием.
Варианты 2 и 3 почти схожи по синтаксису.
Используемые коды:
1. Сохранение и загрузка моделей Keras
2. https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model