Intel® Distribution of OpenVINO™ Toolkit
Community support and discussions about the Intel® Distribution of OpenVINO™ toolkit, OpenCV, and all things computer vision-related on Intel® platforms.
5764 Discussions

caffe scale dosn't surpoort two bottom as input????

Community Manager

caffe scale dosn't surpoort two bottom as input????

0 Kudos
2 Replies
Community Manager

@xiaoshenhua The scale layer is meant to scale some input values by dividing by the standard deviation of those values. I've only seen it used with one bottom(input) in the networks that I've used.

Community Manager

thank you but


in the caffe/src/caffe/proto/caffe.proto:


support two inputs


so how can i realize (N*C*W*H) * (N*C)?


message ScaleParameter {


// The first axis of bottom[0] (the first input Blob) along which to apply


// bottom[1] (the second input Blob). May be negative to index from the end


// (e.g., -1 for the last axis).




// For example, if bottom[0] is 4D with shape 100x3x40x60, the output


// top[0] will have the same shape, and bottom[1] may have any of the


// following shapes (for the given value of axis):


// (axis == 0 == -4) 100; 100x3; 100x3x40; 100x3x40x60


// (axis == 1 == -3) 3; 3x40; 3x40x60


// (axis == 2 == -2) 40; 40x60


// (axis == 3 == -1) 60


// Furthermore, bottom[1] may have the empty shape (regardless of the value of


// "axis") -- a scalar multiplier.


optional int32 axis = 1 [default = 1];


// (num_axes is ignored unless just one bottom is given and the scale is


// a learned parameter of the layer. Otherwise, num_axes is determined by the


// number of axes by the second bottom.)


// The number of axes of the input (bottom[0]) covered by the scale


// parameter, or -1 to cover all axes of bottom[0] starting from axis.


// Set num_axes := 0, to multiply with a zero-axis Blob: a scalar.


optional int32 num_axes = 2 [default = 1];