3

Я тренирую AlexNet по своим собственным данным, используя кофе. Одна из проблем, которые я вижу, заключается в том, что «Выходная мощность поезда» Потеря и «Итерационные потери» почти одинаковы в процессе обучения. Более того, эта потеря имеет колебания. нравится:Почему потери «потери поезда» и «потери итерации» одинаковы во время обучения с помощью кофе?

... 
...Iteration 900, loss 0.649719 
... Train net output #0: loss = 0.649719 (* 1 = 0.649719 loss) 
... Iteration 900, lr = 0.001 
...Iteration 1000, loss 0.892498 
... Train net output #0: loss = 0.892498 (* 1 = 0.892498 loss) 
... Iteration 1000, lr = 0.001 
...Iteration 1100, loss 0.550938 
... Train net output #0: loss = 0.550944 (* 1 = 0.550944 loss) 
... Iteration 1100, lr = 0.001 
... 
  1. я должен увидеть это колебание?
  2. Как вы видите, разница между сообщаемыми потерями невелика. Является ли это проблемой в моем обучении?

мой solver является:

net: "/train_val.prototxt" 
test_iter: 1999 
test_interval: 10441 
base_lr: 0.001 
lr_policy: "step" 
gamma: 0.1 
stepsize: 100000 
display: 100 
max_iter: 208820 
momentum: 0.9 
weight_decay: 0.0005 
snapshot: 10441 
snapshot_prefix: "/caffe_alexnet_train" 
solver_mode: GPU 
+0

относящийся: http://stackoverflow.com/q/31840488/1714410 – Shai

ответ

4
  1. Caffe использует Stochastic Gradient Descent (SGD) метод для обучения сети. В конечном итоге потеря уменьшается, однако, локально, совершенно нормально, что потеря немного колеблется.
  2. Сообщенные «Итерационные потери» - это взвешенная сумма всех уровней потерь вашей сети, усредненных по сравнению с average_loss итерациями. С другой стороны, сообщенный «нетто-результат поезда ...» сообщает каждый сетевой вывод только от текущей итерации.
    В вашем примере вы не установили average_loss в свой 'solver', и таким образом average_loss=1 по умолчанию. Поскольку у вас есть только один выход потерь с loss_weight=1, то сообщается «нетто-результат поезда ...» и «Итерационные потери» одинаковы (с точностью до отображения).

В заключение: ваш выход совершенно нормальный.

+0

Большое спасибо @Shai за ответ. Не могли бы вы рассказать мне, как я могу определить, что 'average_loss' в моем« решателе »тоже? Я проверил его в 'googlenet', и это было' как average_loss: 40'. Является ли это начальным значением для этого? – user6726469

+0

@ user6726469 значение по умолчанию равно 1. Обычно я устанавливаю его на то же значение параметра 'display'. Это зависит от вас, чтобы решить, какой интервал в среднем. – Shai

Смежные вопросы