2016-07-26 227 views
3

我有一個Python應用程序,我使用的是TensorFlow,我在Docker容器中運行它。在本地運行時,我看到內存使用情況仍然低於4GB的RAM,但是有一些大文件正在寫入和處理。當TensorFlow達到創建了第一個檢查點文件的時候,我得到以下異常:VirtualBox內存異常 - 使用TensorFlow和Docker的std :: bad_alloc

terminate called after throwing an instance of 'std::bad_alloc' 
    what(): std::bad_alloc 

我的模型是複雜,所以這個文件可能高於1GB,也是我的數據是圖像,所以我已經下載了約30GB的數據只是爲了開始運行模型,所以我不知道這是否偶然發生在這裏,或者如果這個文件實際上太大了。我只將一小批圖像加載到內存中進行每個時代的模型訓練,所以我試圖保持內存使用率較低。我的VirtualBox的配置看起來像這樣:出現

enter image description here

的錯誤使用C++,所以我認爲它是從TensorFlow代碼來內部。有沒有人看過這樣的東西,或知道我可以改變什麼?我覺得有足夠的RAM分配,但也許我的磁盤訪問配置不正確?

回答

0

最有可能沒有足夠的內存。對於運行TensorFlow(特別是在具有默認安裝的python中),4GB非常小,適合進行培訓。您的模型大小可能低於1GB,但在培訓期間 - 以及在寫出檢查點時,TensorFlow會臨時分配更多內存用於緩衝,這可能是您遇到OOM錯誤的原因。如果你用4GB正常運行,直到檢查點,8GB應該沒問題。