2

我使用 caffe 已经有一段时间了,取得了一些成功,但我在示例中注意到,考虑到数据集只有两种方式拆分TRAINTEST阶段,其中该TEST集似乎充当验证集。

理想情况下,我希望拥有三组,这样一旦模型被训练,我就可以保存它并在一个全新的测试集上对其进行测试——存储在一个完整的单独的 lmdb 文件夹中。有没有人有这方面的经验?谢谢。

4

1 回答 1

5

验证和测试之间的区别意味着超参数可以调整到验证集,而没有任何东西以任何方式适合测试集。 caffe除了权重之外不优化任何东西,并且由于测试只是为了评估,所以它完全符合预期。

假设您在求解器优化运行之间调整超参数。传递给caffe测试的 lmdb 实际上是验证集。如果您已经完成了超参数的调整,并使用 lmdb 进行了一次求解器优化,以进行测试,以保存以前运行中从未使用过的数据。最后一个 lmdb 是您的测试集。

由于 caffe 没有优化超参数,它的测试集就是它的本质,一个测试集。围绕迭代超参数值的求解器优化调用可以想出一些 python 代码。完成后,它可以用看不见的数据交换一个新的 lmdb,以告诉您网络使用它的泛化程度。

我不建议为了明确的 val/test 区别而修改 caffe。您甚至不必为求解器和网络定义设置 prototxt 文件而进行任何详细的操作。您可以在最后进行 val/test 交换,只需将 val lmdb 移动到其他地方并将测试 lmdb 移动到它的位置使用shutil.copy(src, dst)

于 2015-10-02T14:51:12.887 回答