2016-12-05 61 views
1

我有一個非常複雜的網絡,佔用了我的GPU上的大量內存。我發現,如果我訓練和測試我的數據(這是標準情況),內存使用率比單純訓練高兩倍。真的有必要測試我的數據嗎?或者它只是用於可視化,即向我展示我的網絡是否過度配合或者像那樣?caffe:需要測試嗎?

我認爲這是必要的,但我不知道原因。我的問題是:如何區分培訓和測試?我知道你可以做

test_initialization: false 

但是,如果我想測試我的網後,我會怎麼做?

在此先感謝!

+0

你的圖層中是否還有測試階段? – Cassie

+0

不,我應該嗎? @Cassie – thigi

+0

如果你這樣做,那麼你可以使用命令行測試。如果沒有,你可以寫一個腳本。我正在爲你寫一個答案。 – Cassie

回答

2

如果您的train.prototxt中有一個測試階段,您可以使用命令行來測試您的網絡。你可以看到這個link,他們提以下命令行:

# score the learned LeNet model on the validation set as defined in the 
    # model architeture lenet_train_test.prototxt 
    caffe test -model examples/mnist/lenet_train_test.prototxt -weights 
    examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 100 

您可以編輯它來測試你的網絡。

還有一個Python tutorial您可以按照加載訓練有素的網絡與腳本並在現場使用它。這可以被操縱來執行單獨的前向傳球,並將結果與​​預期結果進行比較。我不指望它完全開箱即用,所以你將不得不嘗試一些東西。

+0

是的,但這是否與我在訓練期間進行測試階段相同?因爲如果是這樣,爲什麼我甚至需要測試階段呢? @Cassie – thigi

+0

在培訓期間運行測試階段可以提供關於您的模型在訓練過程中進行概括的信息。這當然不是必需的,但它可以深入瞭解您的模型學習的速度以及是否和何時過度。 – Cassie

+0

好吧,所以它通常只是一個「測試」,因爲它說,但並沒有改善訓練本身。謝謝! – thigi