2016-12-05 74 views
0

當你想訓練一個網,你會得到像日誌信息:caffe內存需要如何計算?

Memory required for data: 493376512 

你如何解釋多少?它是以字節爲單位的嗎?

+1

如果您還沒有從這些答案中提取信息,大小以字節爲單位給出。 – Prune

+0

好的,謝謝!是的,這些答案字面上說,它是不可能計算它的權利? @Prune – thigi

+0

我會在下面的答案中總結。 – Prune

回答

1

要回答你的直接問題,圖層的內存使用量以字節爲單位給出,而不是以位表示。總體而言,所報告的內存是可在初始化時計算的所有層所需的內存。參數和緩衝區空間是根據需要分配的,因此將它們彙總並報告是沒有用的 - 由於序列化重用,其中一些可能會佔用較少的總內存。

正如一個答案所說,確定最大內存使用量的最有效方法是運行正向通過並獲取其高水位標記。

+0

好的,謝謝:)我假設你會用C++而不是python運行正向傳遞? – thigi

+0

要麼應該做。我很少遇到語言界面;相反,我直接調用**。/ build/tools/caffe **。 – Prune

+0

嗯,我總是通過python界面運行,因爲我沒有看到任何教程顯示如何使用c + +代碼。那麼你如何設置你的數據呢?不知何故,你必須創建一個lmdb或hdf5文件? @Prune – thigi

0

見shelhamer的評論: https://github.com/BVLC/caffe/issues/2387#issuecomment-97910200

這是在層的輸出感 所有頂級斑點或「數據」所需的內存。它排除了圖層中的差異,參數和任何中間斑點。 @jeffdonahue你還記得 這個號碼的動機嗎?

而且longjon:

由於層分別負責分配參數 和緩衝液,也沒有辦法,一般知道的 所需的內存總量,除了通過運行一個向前傳球。