Caffe中的缩放图层

时间:2016-05-24 10:31:24

标签: neural-network deep-learning caffe conv-neural-network resnet

我正在查看Caffe prototxt for deep residual networks并注意到"Scale"图层的外观。

layer {
    bottom: "res2b_branch2b"
    top: "res2b_branch2b"
    name: "scale2b_branch2b"
    type: "Scale"
    scale_param {
        bias_term: true
    }
}

但是,Caffe layer catalogue中没有此图层。有人可以解释这一层的功能和参数的含义,还是指向Caffe的最新文档?

2 个答案:

答案 0 :(得分:18)

您可以找到有关caffe here的详细文档。

具体来说,对于"Scale"图层文档reads

  

计算两个输入Blob的乘积,其形状为后者Blob"广播"以匹配前者的形状。相当于平铺后一个Blob,然后计算元素乘积   可以省略第二输入,在这种情况下,它被学习为层的参数。

在您的情况下,似乎(单个"底部"),此图层会学习比例因子乘以"res2b_branch2b"。此外,由于scale_param { bias_term: true }意味着该层不仅学习乘法比例因子,还学习常数项。因此,正向传递计算:

res2b_branch2b <- res2b_branch2b * \alpha + \beta

在训练期间,网络会尝试学习\alpha\beta的值。

答案 1 :(得分:10)

caffe.proto file中还有一些文档,你可以搜索'ScaleParameter'。

感谢您的帖子堆:)我们正在寻找缩放图层。如果有人想要一个通过标量(0.5)缩放然后“添加”-2(并且这些值不应该改变)的图层的示例:

layer {
  name: "scaleAndAdd"
  type: "Scale"
  bottom: "bot"
  top: "scaled"
  param {
    lr_mult: 0
    decay_mult: 0
  }
  param {
    lr_mult: 0
    decay_mult: 0
  }
  scale_param {
    filler {
      value: 0.5    }
    bias_term: true
    bias_filler {
      value: -2
    }
  }
}

(可能这里不需要decay_mult。但是不知道。看评论。) 除此之外:

  • lr_mult:0 - 关闭学习“那个参数” - 我认为 第一个"param {"总是(?)是指权重,第二个是偏见(lr_mult不是ScaleLayer特定的)
  • 填充:“填充参数”[see caffe.proto]告诉如何填充无效的第二个blob。默认值是一个常量“值:...”。
  • bias_filler:告诉如何填充可选偏差blob的参数
  • bias_term:是否存在偏见blob

全部取自caffe.proto。并且:我只测试了上面的两个填充值= 1.2。