caffe SolverParameter中的iter_size參數什麼作用?
01-07
看代碼是將ForwardBackward重複執行了幾遍,但這樣有什麼作用呢?
謝邀。我也是接觸不久,僅供參考。每次循環都會以batch_size大小計算梯度和loss,最後再取iter_size次的平均。可以看成iter_size*batch_size次更新一次參數。這樣的好處是比一次使用大的batch_size要節省存儲。
Dtype loss = 0;for (int i = 0; i &< param_.iter_size(); ++i) { //前向傳播+後向傳播 loss += net_-&>ForwardBackward();
}
loss /= param_.iter_size();....ApplyUpdate();處理batchsize*itersize張圖片後,才調用一次ApplyUpdate函數根據學習率、method(SGD、AdaSGD等)進行梯度下降。這個參數乘上你的train prototxt中的batch size是你實際使用的batch size。 相當於讀取batchsize*itersize個圖像才做一下gradient decent。 這個參數可以規避由於gpu不足而導致的batchsize的限制 因為你可以用多個iteration做到很大的batch 即使單次batch有限
看代碼解析,很明白的Caffe代碼解析(4)
推薦閱讀:
※GTX1080/1070配置深度學習環境。求指導,剛入手~?
※如何評價Facebook Training ImageNet in 1 Hour這篇論文?
※如何看待賈揚清Caffe2go開源,手機就能訓練神經網路?
TAG:深度學習DeepLearning | Caffe深度學習框架 |