我正在查看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的最新文档?
答案 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。但是不知道。看评论。) 除此之外:
"param {"
总是(?)是指权重,第二个是偏见(lr_mult不是ScaleLayer特定的)全部取自caffe.proto。并且:我只测试了上面的两个填充值= 1.2。