簡單點說,批量大小將決定我們一次訓練的樣本數目。
batch_size將影響到模型的優化程度和速度。
為什麼需要有 batch_size :
batchsize 的正確選擇是為了在記憶體效率和記憶體容量之間尋找最佳平衡。
batch_size的取值:
全批次(藍色)
如果資料集比較小我們就採用全資料集。全資料集確定的方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。
注:對於大的資料集我們不能使用全批次,因為會得到更差的結果。
迷你批次(綠色)
選擇乙個適中的 batch_size 值。就是說我們選定乙個batch的大小後,將會以batch的大小將資料輸入深度學習的網路中,然後計算這個batch的所有樣本的平均損失,即代價函式是所有樣本的平均。
隨機(batch_size等於1的情況)(紅色)
每次修正方向以各自樣本的梯度方向修正,橫衝直撞
各自為政,難以達到收斂。
適當的增加batchsize 的優點:
1.通過並行化提高記憶體利用率。
2.單次epoch的迭代次數減少,提高執行速度。(單次epoch=(全部訓練樣本/batchsize) / iteration =1)
3.適當的增加batch_size,梯度下降方向準確度增加,訓練震動的幅度減小。(看上圖便可知曉)
經驗總結:
相對於正常資料集,如果batch_size過小,訓練資料就會非常難收斂,從而導致underfitting。
增大batch_size,相對處理速度加快。
增大batch_size,所需記憶體容量增加(epoch的次數需要增加以達到最好結果)。
這裡我們發現上面兩個矛盾的問題,因為當epoch增加以後同樣也會導致耗時增加從而速度下降。因此我們需要尋找最好的batch_size。
再次重申:batchsize 的正確選擇是為了在記憶體效率和記憶體容量之間尋找最佳平衡。
迭代是重複反饋的動作,神經網路中我們希望通過迭代進行多次的訓練以到達所需的目標或結果。
每一次迭代得到的結果都會被作為下一次迭代的初始值。
乙個迭代 = 乙個正向通過+乙個反向通過
乙個時期 = 所有訓練樣本的乙個正向傳遞和乙個反向傳遞。
HDFS Balance調優引數設定
問題背景與現象 當hdfs集群各個datanode儲存的資料不均衡時,需要使用hdfs balance功能,調整相關引數可以提公升balance效能。操作步驟 修改如下引數 dfs.datanode.max.transfer.threads 8192 dfs.namenode.replication...
Nginx效能調優引數設定
1.1阻塞和非阻塞網路模型 同步阻塞模型,當相求程序或者執行緒數量增加到一定程度後,效能會急劇下降,負載率不高。不建議使用 nginx基於事件的非阻塞多路復用 epool或kquene 模型,乙個程序在短時間內可以響應大量的請求。建議使用 1.2cpu個數 建議 小於等於cpu核心的數量,一般高於c...
引數設定 pandas引數設定小技巧
python大資料分析記錄 分享 成長 在日常使用pandas的過程中,由於我們所分析的資料表規模 格式上的差異,使得同樣的函式或方法作用在不同資料上的效果存在差異。而pandas有著自己的一套 引數設定系統 可以幫助我們在遇到不同的資料時靈活調節從而達到最好的效果,本文就將介紹pandas中常用的...