1

我正在使用張量流調整32 cpu機器上的VGG16網絡。我用稀疏交叉熵損失。我必須將布料圖像分爲50類。經過2周的訓練,這是如何損失正在下降,我覺得收斂非常緩慢。我的批量大小是50.這是正常的還是你認爲在這裏出了問題?準確性也非常糟糕。現在它崩潰與錯誤的內存分配錯誤。 terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_allo微調VGG最後一層速度很慢

我在日誌文件中最後一行是這樣的 -

2016-12-13 08:56:57.162186: step 31525, loss = 232179.64 (1463843.280 sec/batch)

total loss

我也試過特斯拉K80 GPU和之後的培訓20個小時,這是損失的樣子。所有參數都相同。令人擔憂的部分是 - 使用GPU不會增加迭代速度,這意味着每個步驟都需要32個cpu與50個dpu或特斯拉K80。

我絕對需要一些實用的建議。

total loss GPU enter image description here

+0

你的問題由兩部分組成。不會很好地收斂與參數和輸入處理有關,也許您需要嘗試不同的權重衰減和學習速率衰減,或嘗試不同的損失優化。關於你的系統內存不足,只需減少你的批量大小,不要立即將所有數據加載到內存中,而是在它們之間交換。 – Feras

+0

爲了能夠幫助您更多地與我們分享您的參數和超參數。 – Feras

回答

0

另 - 和更好地完成 - 選擇是不使用VGG16。如果你看Figure 5 in this paper,你會注意到VGG16在精度和FLOP(每秒浮點運算)方面的表現非常差。如果你需要速度,Mobilenet或縮小尺寸的ResNet會更好。即使是初始版本,V2的計算成本也會低於VGG的準確度。

這將大大減少您的訓練時間內存使用。