| title: Concat Layer | |
| # Concat Layer | |
| * Layer type: `Concat` | |
| * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ConcatLayer.html) | |
| * Header: [`./include/caffe/layers/concat_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/concat_layer.hpp) | |
| * CPU implementation: [`./src/caffe/layers/concat_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/concat_layer.cpp) | |
| * CUDA GPU implementation: [`./src/caffe/layers/concat_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/concat_layer.cu) | |
| * Input | |
| - `n_i * c_i * h * w` for each input blob i from 1 to K. | |
| * Output | |
| - if `axis = 0`: `(n_1 + n_2 + ... + n_K) * c_1 * h * w`, and all input `c_i` should be the same. | |
| - if `axis = 1`: `n_1 * (c_1 + c_2 + ... + c_K) * h * w`, and all input `n_i` should be the same. | |
| * Sample | |
| layer { | |
| name: "concat" | |
| bottom: "in1" | |
| bottom: "in2" | |
| top: "out" | |
| type: "Concat" | |
| concat_param { | |
| axis: 1 | |
| } | |
| } | |
| The `Concat` layer is a utility layer that concatenates its multiple input blobs to one single output blob. | |
| ## Parameters | |
| * Parameters (`ConcatParameter concat_param`) | |
| - Optional | |
| - `axis` [default 1]: 0 for concatenation along num and 1 for channels. | |
| * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): | |
| {% highlight Protobuf %} | |
| {% include proto/ConcatParameter.txt %} | |
| {% endhighlight %} | |