簡體   English   中英

減少 SSD-300 的訓練步驟

[英]Reduce Training steps for SSD-300

我是深度學習的新手,我正在嘗試訓練我的 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 相關的具體數字

由於它沒有參數來設置您想要的值,因此您必須進入源代碼並找到為訓練集設置批量大小和測試步驟的位置。 如果由模型類型和訓練數據的大小決定,則用於訓練批量大小和訓練步驟的值。 例如,如果您說對圖像進行分類並且圖像形狀為 (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

看起來您正在使用的模塊支持“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.')

理想的訓練步驟數取決於您的數據和應用程序。 查看是否需要更長時間訓練的常用技術是在訓練期間測量模型隨時間的損失,並在損失不再大幅減少時停止訓練。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM