我是Caffe的新手,谢谢大家!
在https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto
我看到一个未注释的枚举变量phase,它有两个选项TRAIN和TEST。
enum Phase { TRAIN = 0; TEST = 1;}
它们是如何工作的?我最近看到一个模型也有这两个阶段。.prototxt文件看起来像这样:
name: "CIFAR10_full"layer { name: "cifar" type: "Data" top: "data" top: "label" data_param { source: "CIFAR-10/cifar10_train_lmdb" backend: LMDB batch_size: 200 } transform_param { mirror: true } include: { phase: TRAIN }}layer { name: "cifar" type: "Data" top: "data" top: "label" data_param { source: "CIFAR-10/cifar10_test_lmdb" backend: LMDB batch_size: 100 } transform_param { mirror: false } include: { phase: TEST }}
我可以从TRAIN阶段切换到TEST阶段吗?切换在哪里进行?
回答:
在训练过程中(即执行$CAFFE_ROOT/tools/caffe train [...]
),Caffe可以在训练阶段和测试阶段之间交替:在训练阶段,参数会发生变化,而在测试阶段,参数是固定的,模型仅运行前馈示例以估计当前的模型性能。
使用两个不同的数据集进行训练和测试是非常自然的,这就是为什么你会使用不同的phase
值。
你可以在这里阅读更多关于训练/测试迭代的信息。