Tensorflow:模型訓練tensorflow.train

 

深度學習訓練中的幾個概念

(1)batchsize:批大小。在深度學習中,一般採用SGD訓練,即每次訓練在訓練集中取batchsize個樣本訓練;一次Forword運算以及BP運算中所需要的訓練樣本數目,其實深度學習每一次參數的更新所需要損失函數並不是由一個{data:label}獲得的,而是由一組數據加權得到的,這一組數據的數量就是[batch size]。當然batch size 越大,所需的內存就越大,要量力而行。

(2)step/iteration:1個iteration等於使用batchsize個樣本訓練一次;每一次迭代都是一次權重更新,每一次權重更新需要batch size個數據進行Forward運算得到損失函數,再BP算法更新參數。

(3)epoch:1個epoch等於使用訓練集中的全部樣本訓練一次;一般在訓練時會重複數據多次:dataset = dataset.shuffle(params['buffer']).repeat(params['epochs'])。

訓練完整個樣本集需要:數據量*epochs/batch_size個iteration/step,當然如果有early stopping則可能小於這個值。模型訓練完後,再運行再訓練,則會接着上次的ckpt訓練,但是如果有early stopping,且達到指標,超過後會提示tensorflow No increase in metric "f1" for steps ***, which is greater than or equal to max steps ***,此時並不會接着訓練。

舉個例子

訓練集有1000個樣本,batchsize=10,epoch=1,那麼訓練完整個樣本集需要1000*1/10=100次iteration/step。

loss = 5.8677516, step = 953 (12.937 sec) 表示step = 953時的loss

Saving 'checkpoint_path' summary for global step 953: results/model/model.ckpt-953 表示在step = 953時,保存一次ckpt.

from: -柚子皮-

ref: [tf.train]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章