| --- |
| title: Reshape Layer |
| --- |
| |
| # Reshape Layer |
| * Layer type: `Reshape` |
| * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ReshapeLayer.html) |
| * Header: [`./include/caffe/layers/reshape_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/reshape_layer.hpp) |
| * Implementation: [`./src/caffe/layers/reshape_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reshape_layer.cpp) |
|
|
| * Input |
| - a single blob with arbitrary dimensions |
| * Output |
| - the same blob, with modified dimensions, as specified by `reshape_param` |
|
|
| * Sample |
|
|
| layer { |
| name: "reshape" |
| type: "Reshape" |
| bottom: "input" |
| top: "output" |
| reshape_param { |
| shape { |
| dim: 0 # copy the dimension from below |
| dim: 2 |
| dim: 3 |
| dim: -1 # infer it from the other dimensions |
| } |
| } |
| } |
| |
| The `Reshape` layer can be used to change the dimensions of its input, without changing its data. Just like the `Flatten` layer, only the dimensions are changed; no data is copied in the process. |
|
|
| Output dimensions are specified by the `ReshapeParam` proto. Positive numbers are used directly, setting the corresponding dimension of the output blob. In addition, two special values are accepted for any of the target dimension values: |
|
|
| * **0** means "copy the respective dimension of the bottom layer". That is, if the bottom has 2 as its 1st dimension, the top will have 2 as its 1st dimension as well, given `dim: 0` as the 1st target dimension. |
| * **-1** stands for "infer this from the other dimensions". This behavior is similar to that of -1 in *numpy*'s or `[]` for *MATLAB*'s reshape: this dimension is calculated to keep the overall element count the same as in the bottom layer. At most one -1 can be used in a reshape operation. |
|
|
| As another example, specifying `reshape_param { shape { dim: 0 dim: -1 } }` makes the layer behave in exactly the same way as the `Flatten` layer. |
| |
| ## Parameters |
|
|
| * Parameters (`ReshapeParameter reshape_param`) |
| - Optional: (also see detailed description below) |
| - `shape` |
| * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): |
|
|
| {% highlight Protobuf %} |
| {% include proto/ReshapeParameter.txt %} |
| {% endhighlight %} |
|
|