訓練神經網絡模型過程中batch_size,steps_per_epoch,epochs意義

AI:訓練神經網絡模型過程中batch_size,steps_per_epoch,epochs意義


batch_size:批大小。batch_size是計算效率和內存容量之間的平衡參數。若爲高性能GPU,可以設置更大的batch_size值。神經網絡訓練過程中,隨機梯度下降時,使用梯度的數量,即每次使用batch_size個數據樣本來訓練、更新權重參數。1次迭代等於使用batch_size個樣本訓練一次。
如果batch_size過小,訓練數據就會非常難收斂,導致欠擬合。
增大batch_size,處理速度加快,但對計算設備的內存需求也相應增大。

 


epochs:所有的訓練樣本完成一次Forword運算以及一次BP運算。所有圖像的訓練輪次,即使用所有樣本訓練一遍。一個epoch是所有訓練樣本的一輪正向傳遞和一輪反向傳遞。
例如,訓練數據集總共有1000個樣本。若batch_size=10,那麼訓練完全體樣本集需要100次迭代,1次epoch。

 


steps_per_epoch:一輪epoch包含的步數(每一步是batch_size個數據送入),使用TensorFlow數據Tensor輸入張量進行訓練時,默認None自動分割,即數據集樣本數/batch_size。
把訓練樣本的數量除以batch_size批大小得出。例如,總共有100張訓練圖片,且batch_size批大小爲50,則steps_per_epoch值爲2。
batch_size=全體數據集大小 / steps_per_epoch。如果設置batch_size的大小,那麼在fit_generator時 , steps_per_epoch = len(x_train) // (batch_size*epochs)
steps_per_epoch就是對於下一輪的epoch開始之前,調用generator產生準備數據的次數,generator必須每次返回batch_size個training樣本,那麼:
steps_per_epoch = total_samples//(batch_size)
這裏的//是整除,也可以使用numpy.ceil的函數向上取整,這樣做的目的是爲了捨棄最後不滿足batch_size的數據。

發佈了1033 篇原創文章 · 獲贊 999 · 訪問量 340萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章