#tensorflow #tensorflow-serving
#tensorflow #tensorflow-обслуживание
Вопрос:
Пожалуйста, как я могу сохранить эту модель, используя TensorFlow SaveModel.
train_steps = int(0.5 (1.0 * num_epochs * nusers) / batch_size)
steps_in_epoch = int(0.5 nusers / batch_size)
print("Will train for {} steps, evaluating once every {} steps".format(train_steps, steps_in_epoch))
def experiment_fn(output_dir):
return tf.contrib.learn.Experiment(
tf.contrib.factorization.WALSMatrixFactorization(
num_rows = nusers,
num_cols = nitems,
embedding_dimension = n_embeds,
model_dir = output_dir),
train_input_fn = read_dataset(tf.estimator.ModeKeys.TRAIN, input_path,batch_size, nitems, nusers, num_epochs,n_embeds, output_dir),
eval_input_fn = read_dataset(tf.estimator.ModeKeys.EVAL, input_path, batch_size, nitems, nusers, num_epochs, n_embeds, output_dir),
train_steps = train_steps,
eval_steps = 1,
min_eval_frequency = steps_in_epoch,
export_strategies = tf.contrib.learn.utils.saved_model_export_utils.make_export_strategy(serving_input_fn = create_serving_input_fn(nitems, nusers))
)
Я попытался заменить export_strategies на export_strategies=tf.export_saved_model(output_dir, serving_input_fn = create_serving_input_fn(nitems, nusers))
, и он возвращает следующее сообщение об ошибке
AttributeError: module 'tensorflow' has no attribute 'export_saved_model
Также пробовал export_strategies=tf.saved_model(output_dir, serving_input_fn = create_serving_input_fn(nitems, nusers))
TypeError: 'DeprecationWrapper' object is not callable
Ответ №1:
Формат SavedModel — это еще один способ сериализации моделей. Модели, сохраненные в этом формате, могут быть восстановлены с помощью tf.keras.models.load_model и совместимы с обслуживанием TensorFlow. В руководстве по SavedModel подробно рассказывается о том, как обслуживать / проверять SavedModel. Приведенный ниже код иллюстрирует шаги по сохранению и восстановлению модели.
# Create and train a new model instance.
model = create_model()
model.fit(train_images, train_labels, epochs=5)
# Save the entire model as a SavedModel.
!mkdir -p saved_model
model.save('saved_model/my_model')
# my_model directory
ls saved_model
# Contains an assets folder, saved_model.pb, and variables folder.
ls saved_model/my_model
# Reload a fresh Keras model from the saved model:
new_model = tf.keras.models.load_model('saved_model/my_model')