Как поставить оценки между тренировками в Tensorflow - PullRequest
0 голосов
/ 29 июня 2018

Согласно моему пониманию машинного обучения (хотя я очень плохо знаком с ним), оценка модели должна проводиться в процессе обучения. Это позволит избежать переоснащения или уменьшить вероятность неправильных прогнозов.

Я попытался изменить пример официальных сайтов Tensorflow, предоставленных в соответствии с моим проектом, и обнаружил, что код выполняет оценку только ОДИН РАЗ после завершения обучения модели.

Это очень странно для меня, потому что только одна оценка, кажется, делает "фазу оценки" бесполезной. Другими словами, какая польза от оценки, если обучение уже сделано? Это не может помочь создать лучшую модель, не так ли?

Вот часть моего кода:

 nn = tf.estimator.Estimator(model_fn=model_fn, params=model_params, model_dir='/tmp/nmos_self_define')

  train_input_fn = tf.estimator.inputs.numpy_input_fn(
      x={"x": train_features_numpy},
      y=train_labels_numpy,
      batch_size = 1,
      num_epochs= 1,
      shuffle=True)

  # Train
  nn.train(input_fn=train_input_fn)

  test_input_fn = tf.estimator.inputs.numpy_input_fn(
      x={"x": test_features_numpy},
      y=test_labels_numpy,
      batch_size = 1,
      num_epochs= 1,
      shuffle=False)

  ev = nn.evaluate(input_fn=test_input_fn)
  print("Loss: %s" % ev["loss"])
  print("Root Mean Squared Error: %s" % ev["rmse"])    

И результаты тренировок, визуализируемые через Tensorboard: enter image description here

Как видите, в конце тренировки произошла только одна оценка (синяя точка)

Хотя я не уверен, что потери не уменьшены из-за отсутствия оценки, я хотел бы знать, как манипулировать кодом, чтобы процесс оценки мог выполняться во время обучения.

Спасибо, что уделили время на чтение этого вопроса, и я хотел бы обсудить этот вопрос как концептуально, так и в плане кода

1 Ответ

0 голосов
/ 03 июля 2018

Оценка модели должна проводиться в процессе обучения. Это позволит избежать переоснащения или уменьшить вероятность неправильных прогнозов.

Само по себе оценивание во время обучения ничего не дает, но позволяет оператору отслеживать характеристики модели по данным, которые он никогда не видел прежде. Затем вы можете настроить гиперпараметры (например, скорость обучения или коэффициент регуляризации) соответственно.

Я обнаружил, что код выполняет оценку ТОЛЬКО ОДИН РАЗ после обучения модели.

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

В дополнение к этому вы должны создать то, что мы называем «набором проверки», который представляет собой небольшое подмножество обучающих данных, на которых алгоритм не обучается для выполнения ваших тренировочных оценок. При вашем текущем подходе вы можете превзойти свой тестовый набор. Тестовый набор следует использовать очень редко для оценки реальных возможностей обобщения вашей модели.

...