Что означают шаги в методе поезда tf.estimator.Estimator?

Я совсем запутался со значением эпох и шагов. Я тоже читал вопрос В чем разница между шагами и эпохами в TensorFlow?, но не уверен в ответе. Рассмотрим эту часть кода:

EVAL_EVERY_N_STEPS = 100
MAX_STEPS = 10000

nn = tf.estimator.Estimator(
        model_fn=model_fn,
        model_dir=args.model_path,
        params = {"learning_rate": 0.001},
        config=tf.estimator.RunConfig())

for _ in range(MAX_STEPS // EVAL_EVERY_N_STEPS):
        print(_)

        nn.train(input_fn=train_input_fn,
                 hooks=[train_qinit_hook, step_cnt_hook],
                 steps=EVAL_EVERY_N_STEPS)

        if args.run_validation:
            results_val = nn.evaluate(input_fn=val_input_fn,
                                      hooks=[val_qinit_hook, 
                                      val_summary_hook],
                                      steps=EVAL_STEPS)

            print('Step = {}; val loss = {:.5f};'.format(
                results_val['global_step'],
                results_val['loss']))
end

Кроме того, количество обучающих выборок равно 400. Я считаю MAX_STEPS//EVAL_EVERY_N_STEPS равными эпохам (или итерациям). Действительно, количество эпох равно 100. Что означают шаги в nn.train?

Вам не нужен цикл for с оценщиком. Он обрабатывает итерацию так же, как Keras. И, пожалуйста, внимательно прочитайте руководства по TensorFlow.

Sharky 10.04.2019 11:28

Фактически этот код является частью инструментария DLTK. for _ in range(MAX_STEPS // EVAL_EVERY_N_STEPS): я думаю, что указывает количество эпох.

nastaran 13.04.2019 09:58
Udacity Nanodegree Capstone Project: Классификатор пород собак
Udacity Nanodegree Capstone Project: Классификатор пород собак
Вы можете ознакомиться со скриптами проекта и данными на github .
0
2
848
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В глубоком обучении:

  • эпоха означает один проход по всему обучающему набору.
  • шаг или итерация соответствует одному проходу вперед и одному проходу назад.

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

Здесь, если batch_size == 4, то 100 шагов действительно равны одной эпохе.

epochs = batch_size * steps // n_training_samples

Большое спасибо, Оливье. Это проясняло.

nastaran 13.04.2019 10:00

Другие вопросы по теме