我了解缩放图层的作用为z = x * y
,其中y
被“广播”以匹配x
的形状。
这是我的问题:
我的bottom[0]
尺寸为N*C*H*W
,bottom[1
]为N*1*H*W
,
我希望将bottom[1]
平铺到N*C*H*W
,然后计算元素产品。
我应该如何设置参数,尤其是"axis"
?
很多。
答案 0 :(得分:0)
基于scale_layer.cpp轴是缩放的起始轴:
axis_ = bottom[0]->CanonicalAxisIndex(param.axis());
...
const vector<int>::const_iterator& shape_start =
bottom[0]->shape().begin() + axis_;
const vector<int>::const_iterator& shape_end =
(num_axes == -1) ? bottom[0]->shape().end() : (shape_start + num_axes);
vector<int> scale_shape(shape_start, shape_end);
因此,在您的情况下,您可以将axis参数设置为0或1。
还有另一个参数num_axis
,根据我的理解,它是缩放的轴数。在您的情况下,它可以设置为2或1,具体取决于您的轴参数。 (axis=1, num_axis=1
或axis =0, num_axis=2
)。
我从未使用过这一层,这些结论仅基于scale_layer的源代码。
答案 1 :(得分:0)
我不是百分百肯定的。但你可以尝试两件事。在concat层中,axis = 0表示N * C * H * W中的第一个维度(N),而轴= 1表示第二个维度(C)。所以你可以尝试使用axis = 1和scale参数3.我不完全确定。但你可以尝试让我知道你得到了什么。
您可以尝试的另一件事是使用轴= 1的Concat图层。