Neural network Caffe中的鳞片层
我正在浏览,注意到出现了一个Neural network Caffe中的鳞片层,neural-network,deep-learning,caffe,conv-neural-network,resnet,Neural Network,Deep Learning,Caffe,Conv Neural Network,Resnet,我正在浏览,注意到出现了一个“Scale”层 layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" scale_param { bias_term: true } } 但是,此层在中不可用。有人能解释一下这一层的功能和参数的含义吗,或者指向Caffe的最新文档吗?你可以找到关于Caffe的详细文档
“Scale”
层
layer {
bottom: "res2b_branch2b"
top: "res2b_branch2b"
name: "scale2b_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
但是,此层在中不可用。有人能解释一下这一层的功能和参数的含义吗,或者指向Caffe的最新文档吗?你可以找到关于Caffe的详细文档 具体而言,对于
“缩放”
层,文档:
计算两个输入Blob的乘积,后一个Blob的形状“广播”以匹配前一个Blob的形状。相当于平铺后一个Blob,然后计算elementwise乘积。第二个输入可以省略,在这种情况下,它作为层的参数被学习 在您的例子中,(单个“底部”),该层学习一个比例因子,以乘以
“res2b\u branch2b”
。此外,由于scale_param{bias_term:true}
意味着层不仅学习乘法比例因子,还学习常数项。因此,正向传递计算:
res2b_branch2b <- res2b_branch2b * \alpha + \beta
res2b_branch2b中还有一些关于它的文档,您可以搜索“ScaleParameter”
谢谢你的帖子:)缩放层正是我想要的。如果有人想要一个按标量(0.5)缩放的图层示例,然后“添加”-2(这些值不应更改):
(也许,这里不需要衰变。但不知道。见注释。)
除此之外:
- lr_mult:0-关闭“那个参数”的学习-我认为
第一个
“param{”
始终(?)表示权重,第二个表示偏差(lr_mult不是特定于刻度层)
- filler:一个“FillerParameter”告诉你如何填充第二个blob。默认值是一个常量“value:…”
- bias_filler:告诉如何填充可选的bias blob的参数
- 偏差\术语:是否存在偏差斑点
全部取自caffe.proto.和:我只测试了上面两个填充值都为1.2的层。Shai,那么这是否等同于在res2b_branch2b之后放置一个滤波器大小为1x1的卷积层。如果我们这样做,输出也将是y=W*x+b,它将正确地学习W和b?那么,当我们不证明后面的底层是什么?@Dharma只有当x
是1D时才是等价的。不要混淆内积和标量乘法。哦,好的。然后它只学习两个参数alpha和beta,而不是整个W矩阵。我说的对吗?@Dharma是的,只有标量\alpha如果你用Wolfram语言做这件事,Scale
就是相当于ConstantTimesLayer[]
后跟constanttpluslayer[]你已经提供了权重和偏倚项。所以你把LRXMULT=0,这样你就不需要学习它们了,而Dayay-Mult=0,这样你就不必惩罚权重了。“等等,我已经在编辑的中间了,但是我认为DeayyMult毕竟不是必要的。至少这样的额外规则。”离子项不会改变(损失)梯度的方向。这是因为这些项是常数,因为所涉及的变量(=标度和偏差)是不允许改变的。--但它可能在衰变为0时运行得更快。
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
}
}
}