2

我一直在使用caffe一段時間,但取得了一些成功,但我注意到在示例中給出的數據集只有兩個方向的分裂,分別爲TRAINTEST階段,其中TEST集似乎充當驗證集。Caffe:火車,驗證和測試拆分

理想我想有三組,這樣,一旦模型被訓練,我能救它,測試它在一個完全新的測試集 - 存儲在一個單獨的完成文件夾lmdb。有沒有人有這方面的經驗?謝謝。

回答

5

驗證和測試之間區分由暗示而沒有被裝配到測試以任何方式設置超參數可以被調諧到的驗證集。 caffe不會優化權重,而且由於測試僅用於評估,因此測試完全按照預期進行。

假設你正在調整求解優化運行之間的超參數。傳遞給caffe進行測試的lmdb實際上是驗證集。如果你已經完成了超參數的調整,並且使用lmdb進行了一次更多的求解器優化,以便進行測試,以保存之前運行中從未使用過的數據。最後一個lmdb是你的測試集。

由於朱古力不優化的超參數,它的測試集是它是什麼,測試集。圍繞求解器優化調用提出一些python代碼,這些代碼遍歷超參數值是可能的。完成之後,它可以通過一個新的lmdb與不可見的數據交換來告訴你網絡對它的普遍適用性。

我不建議修改朱古力一個明確VAL /測試的區別。您甚至不必爲解算器和網絡定義設置原型文件做任何事情。您可以通過簡單地在其他地方移動VAL lmdb和使用shutil.copy(src, dst)

+0

由於它的位置移動測試lmdb做在最後的VAL /測試交換,這是有道理的。我不知道如何使用shutil複製現有的數據庫,你是否知道如何將經過培訓的caffe模型指向新的數據庫?謝謝。 – mjacuse

+0

@ypx,我有一個問題讓你更清楚。在MNIST數據集的caffe教程中,「mnist-test-leveldb」實際上是測試數據集或驗證數據集? – Saman

+0

Caffe不區分測試和驗證。驗證集表示您從訓練集中排除了一部分數據,但試圖通過改變超參數(例如學習速率,更多隱藏節點等)來提高準確性/丟失率。測試集是第三個子集,可以告訴您網絡在您選擇的最佳超級參數配置方面的表現如何。 – ypx