матрицы веса и стоимости в каждую эпоху RNN с использованием оценочного API tensorflow

#tensorflow #tensorflow-estimator

#tensorflow #tensorflow-оценщик

Вопрос:

Я использовал оценочный API для обучения модели RNN, и я хочу построить график стоимости / эпохи и получить наилучшие весовые матрицы модели. Возможно ли это в оценочном API? вот код:

    classifier.train(input_fn=lambda: input_fn_train(train_x, label_train, batch_size),steps=train_steps)


   eval_result = classifier.evaluate(input_fn=lambda: input_fn_eval(test_x, label_test, batch_size))
  

Ответ №1:

Это возможно. Что вам нужно сделать, так это настроить ваш оценщик для получения соответствующей информации, которая была бы полезна для вас, чтобы решить, какие веса вы хотите сохранить. Это можно сделать через контрольные точки. которые являются «сохранениями» вашей модели. Было бы полезно передать оценщику config= некоторые конфигурации.

Вот пример с пользовательским оценщиком:

 def model_fn(features, labels, mode, params):
    #Some code is here that gives you the output of your model from where
    #you get your predictions.
    if mode == tf.estimator.ModeKeys.TRAIN or tf.estimator.ModeKeys.EVAL:
        #Some more code is here
        loss = #your loss function here
        tf.summary.scalar('loss', loss)
    if mode == tf.estimator.ModeKeys.TRAIN:
        #More code here that train your model
    if mode == tf.estimator.ModeKeys.EVAL:
        #Again more code that you use to get some evaluation metrics
    if mode == tf.estimator.ModeKeys.PREDICT:
        #Code...
    return tf.estimator.EstimatorSpec(mode=mode,
                                      predictions=predictions,
                                      loss=loss,
                                      train_op=train_op,
                                      eval_metric_ops=eval_metric_ops)


configuration = tf.estimator.RunConfig(save_summary_steps=10,
                                       keep_checkpoint_max=30,
                                       save_checkpoints_steps=10,
                                       log_step_count_steps=10)

custom_estimator = tf.estimator.Estimator(model_fn=model_fn,
                               model_dir='model_dir',
                               config=configuration)

custom_estimator.train(input_fn=input_fn_train, steps=10000)
  

save_summary_steps : На самом деле вы можете думать об этом, например, после того, как через сколько шагов ваш
оценщик обновит ваши сводки. Это может быть полезно, чтобы вы могли составить график своих потерь
каждые 10 шагов.

save_checkpoints_steps : После скольких шагов ваш оценщик будет сохранен в текущем состоянии.

Вы можете найти эти контрольные точки в model_dir .

Если вы используете стандартный оценщик, я думаю, что сводки предопределены, но функция потерь уже есть, поэтому вам просто нужно настроить, как часто вы хотите печатать свои сводки и как часто вы хотите сохранять состояние вашей модели.

Комментарии:

1. благодаря вашему ответу, это работает. но в приведенном выше коде просто записана ошибка, в строке tf.summaries.scalar(‘потеря’, loss), tf.summaries необходимо изменить на tf.summaries.

2. Я рад, что смог вам помочь. Отметьте это как решение.