Caffe中的缩放图层

Igo*_*evo 17 neural-network deep-learning caffe conv-neural-network resnet

我正在通过Caffe原型文本查看深度残留网络,并注意到了"Scale"图层的外观.

layer {
    bottom: "res2b_branch2b"
    top: "res2b_branch2b"
    name: "scale2b_branch2b"
    type: "Scale"
    scale_param {
        bias_term: true
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,此图层在Caffe图层目录中不可用.有人可以解释这一层的功能和参数的含义,还是指向Caffe的最新文档?

Sha*_*hai 19

你可以在这里找到关于caffe的详细文档.

具体来说,对于"Scale"图层,doc :

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

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

res2b_branch2b <- res2b_branch2b * \alpha + \beta
Run Code Online (Sandbox Code Playgroud)

在训练过程中的净努力学习的价值\alpha\beta.

  • 如果您使用Wolfram语言进行此操作,则“ Scale”等效于“ ConstantTimesLayer []”,然后是“ ConstantPlusLayer []”。 (2认同)

das*_*sen 10

caffe.proto文件中还有一些文档,你可以搜索'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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

(可能,这里的decay_mult是不必要的.但是dunno.请参阅评论.)除此之外:

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

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