весовые матрицы и стоимость в каждую эпоху РНН с использованием оценочного API тензорного потока - PullRequest
0 голосов
/ 08 марта 2019

Я использовал Estimator API для обучения модели RNN, и я хочу построить график стоимости / эпохи и получить наилучшие матрицы весов модели.Возможно ли это в Estimator 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 Ответ

0 голосов
/ 08 марта 2019

Это возможно. Что вам нужно сделать, это настроить оценщик так, чтобы он представлял релевантную информацию, которая была бы полезна для вас, чтобы решить, какие веса вы хотите сохранить. Это можно сделать через контрольно-пропускные пункты. которые являются «спасениями» вашей модели. Переходя к Оценщику 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.

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

...