我是深度學習的新手,我正在嘗試訓練我的 SSD-300(單次檢測器)模型,這需要很長時間。例如,盡管我運行了 50 個 epoch,但它正在訓練 108370 多個全域步驟。我正在使用官方 github 存盤庫中的默認 train_ssd_network.py 檔案:https : //github.com/balancap/SSD-Tensorflow
我運行的訓練命令:
!python train_ssd_network.py --dataset_name=pascalvoc_2007 epochs= 50 --dataset_split_name=train --model_name=ssd_300_vgg --save_summaries_secs=60 --save_interval_secs=600 --weight_decay=0.0005 --optimizer=adam --learning_rate=0.001 --batch_size=6 --gpu_memory_fraction=0.9 --checkpoint_exclude_scopes =ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box
如何更改訓練步驟以及理想的訓練步驟是什么?
train_ssd_network.py 沒有提供與 global_steps 相關的具體數字
uj5u.com熱心網友回復:
看起來您正在使用的模塊支持“max_number_of_steps”標志,它可以像--max_number_of_steps=10000作為命令列陳述句的一部分一樣使用。該模塊依賴tensorflow 標志從命令列獲取輸入。您可以在此處查看所有支持的標志以及一些說明。
我在另一個答案中看到您找到了相關標志并將第二個引數 None 更改為另一個值。第二個引數是默認值。更改它應該有效,但不是必需的,因為您也可以通過命令列傳遞該值。
tf.app.flags.DEFINE_integer('max_number_of_steps', None,
'The maximum number of training steps.')
理想的訓練步驟數取決于您的資料和應用程式。查看是否需要更長時間訓練的常用技術是在訓練期間測量模型隨時間的損失,并在損失不再大幅減少時停止訓練。
uj5u.com熱心網友回復:
由于它沒有引數來設定您想要的值,因此您必須進入源代碼并找到為訓練集設定批量大小和測驗步驟的位置。如果由模型型別和訓練資料的大小決定,則用于訓練批量大小和訓練步驟的值。例如,如果您說對影像進行分類并且影像形狀為 (64,64,3),您可能可以設定相當大的批量大小而不會出現資源耗盡錯誤。說batch_size=100。如果你的影像形狀是 (500, 500, 3) 那么你需要一個小得多的批量大小,比如 batch_size=20。通常在 model.fit 中您不需要指定步驟的值。將其保留為 None 并且 model.fit 將在內部計算步驟。model.predict 也是如此。如果您真的需要計算測驗集的步驟,那么您只想通過測驗集一次。為此,batch_size X 步數=測驗集中的樣本數。下面的代碼將為您計算。值 bmax 是您根據上述討論設定為最大允許 batch_size 的值。例如,下面假設測驗集中有 10,000 個樣本。
length=10000 # number of samples in the test set
bmax=50 # maximum batch size limit to avoid resource exhaust error
test_batch_size=sorted([int(length/n) for n in range(1,length 1) if length % n ==0 and length/n<=bmax],reverse=True)[0]
test_steps=int(length/test_batch_size)
print ( 'test batch size: ' ,test_batch_size, ' test steps: ', test_steps)
結果是
test batch size: 50 test steps: 200
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/324604.html
上一篇:零損失會影響反向傳播更新嗎
