| | #ifndef CAFFE_MEMORY_DATA_LAYER_HPP_ |
| | #define CAFFE_MEMORY_DATA_LAYER_HPP_ |
| |
|
| | #include <vector> |
| |
|
| | #include "caffe/blob.hpp" |
| | #include "caffe/layer.hpp" |
| | #include "caffe/proto/caffe.pb.h" |
| |
|
| | #include "caffe/layers/base_data_layer.hpp" |
| |
|
| | namespace caffe { |
| |
|
| | |
| | |
| | |
| | |
| | |
| | template <typename Dtype> |
| | class MemoryDataLayer : public BaseDataLayer<Dtype> { |
| | public: |
| | explicit MemoryDataLayer(const LayerParameter& param) |
| | : BaseDataLayer<Dtype>(param), has_new_data_(false) {} |
| | virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom, |
| | const vector<Blob<Dtype>*>& top); |
| |
|
| | virtual inline const char* type() const { return "MemoryData"; } |
| | virtual inline int ExactNumBottomBlobs() const { return 0; } |
| | virtual inline int ExactNumTopBlobs() const { return 2; } |
| |
|
| | virtual void AddDatumVector(const vector<Datum>& datum_vector); |
| | #ifdef USE_OPENCV |
| | virtual void AddMatVector(const vector<cv::Mat>& mat_vector, |
| | const vector<int>& labels); |
| | #endif |
| |
|
| | |
| | |
| | void Reset(Dtype* data, Dtype* label, int n); |
| | void set_batch_size(int new_size); |
| |
|
| | int batch_size() { return batch_size_; } |
| | int channels() { return channels_; } |
| | int height() { return height_; } |
| | int width() { return width_; } |
| |
|
| | protected: |
| | virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom, |
| | const vector<Blob<Dtype>*>& top); |
| |
|
| | int batch_size_, channels_, height_, width_, size_; |
| | Dtype* data_; |
| | Dtype* labels_; |
| | int n_; |
| | size_t pos_; |
| | Blob<Dtype> added_data_; |
| | Blob<Dtype> added_label_; |
| | bool has_new_data_; |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|