在不同阶段具有相同名称的caffe层使用的权重

weights used by caffe layers with same name in different phases

我有一个像这样的原型文本:

layer{
  name:"l1"
  bottom: "b1"
  top: "t1"
  include{
    phase: TRAIN
  }
}
layer{
  name:"l1"
  bottom: "b1"
  top: "t2"
  include{
    phase: TEST
  }
}

有两层
同名
不同的斑点
不同阶段

测试阶段使用的权重是多少?
1.) 在训练阶段学习的权重(因为层具有相同的名称)
2.) 随机初始权重

将尝试在训练阶段学习的权重用于测试阶段。

但如果不满足以下2个条件中的任何一个,就会出现停止测试的错误:

  1. 两层blob数量相等
  2. 两层斑点的形状(每个维度的大小)一致

事实上,测试网络中的层将始终尝试从训练网络中具有相同名称的层复制权重,并检查包含权重的 blob 的数量和形状,以确保它将使用正确的权重。

详情请见"模板 void Net::ShareTrainedLayersWith(const Net* other)" 测试网对象将调用的函数,以在测试开始时从经过训练的网络中复制权重。