| title: Memory Data Layer | |
| # Memory Data Layer | |
| * Layer type: `MemoryData` | |
| * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MemoryDataLayer.html) | |
| * Header: [`./include/caffe/layers/memory_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/memory_data_layer.hpp) | |
| * CPU implementation: [`./src/caffe/layers/memory_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/memory_data_layer.cpp) | |
| The memory data layer reads data directly from memory, without copying it. In order to use it, one must call `MemoryDataLayer::Reset` (from C++) or `Net.set_input_arrays` (from Python) in order to specify a source of contiguous data (as 4D row major array), which is read one batch-sized chunk at a time. | |
| # Parameters | |
| * Parameters (`MemoryDataParameter memory_data_param`) | |
| * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): | |
| {% highlight Protobuf %} | |
| {% include proto/MemoryDataParameter.txt %} | |
| {% endhighlight %} | |
| * Parameters | |
| - Required | |
| - `batch_size`, `channels`, `height`, `width`: specify the size of input chunks to read from memory | |