2017-08-11 25 views
1

我對Chainer來說很陌生,寫過一段代碼來訓練一個簡單的前饋神經網絡。我有一個驗證集和一個火車集,並且想要對驗證集進行500次迭代測試,如果結果更好,我想保存網絡權重。誰能告訴我,我該怎麼做?如何監視Chainer框架中驗證集的錯誤?

這裏是我的代碼:關於審定

optimizer = optimizers.Adam() 
optimizer.setup(model) 

updater = training.StandardUpdater(train_iter, optimizer, device=0) 
trainer = training.Trainer(updater, (10000, 'epoch'), out='result') 

trainer.extend(extensions.Evaluator(validation_iter, model, device=0)) 
trainer.extend(extensions.LogReport()) 
trainer.extend(extensions.PrintReport(['epoch', 'main/loss', 'validation/main/loss', 'elapsed_time'])) 
trainer.run() 

回答

1
  1. 錯誤設置

它由Evaluator報道,並通過PrintReport打印。因此它應該顯示在上面的代碼中。並且要控制這些擴展的執行頻率,您可以在trainer.extend函數中指定trigger關鍵字參數。例如,以下代碼指定打印每個500次迭代。

trainer.extend(extensions.PrintReport(['epoch', 'main/loss', 'validation/main/loss', 'elapsed_time']), trigger=(500, 'iteration'))

您還可以指定觸發Evaluator

  • 保存網絡權
  • 可以使用snapshot_object擴展。

    http://docs.chainer.org/en/stable/reference/generated/chainer.training.extensions.snapshot_object.html

    將調用每個時間段爲默認值。

    如果您想在損失改善時調用它,我認爲您可以使用MinValueTrigger來設置trigger

    http://docs.chainer.org/en/stable/reference/generated/chainer.training.triggers.MinValueTrigger.html