Экспорт модели эксперимента с тензорным потоком с помощью savedmodel

#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')