2016-12-05 75 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