在 caffe prototxt 文件中。 TRAIN 和 TEST 阶段做什么?

in caffe prototxt file. what does the TRAIN and TEST phase do?

我是咖啡新手。谢谢你们!

https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto

我看到 1 个未注释的枚举变量阶段。它有 2 个选项 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 值。

您可以阅读有关 train/test 迭代的更多信息

TRAIN 指定训练期间使用的模型层。

TEST 指定测试期间使用的模型层。

因此,您可以在单个 prototxt 文件中定义 2 个模型:一个用于训练的模型和一个用于测试的模型。

可以在网页的“模型定义”部分找到相关信息 http://caffe.berkeleyvision.org/gathered/examples/imagenet.html