#ifndef CAFFE_DATA_LAYER_HPP_ #define CAFFE_DATA_LAYER_HPP_ #include #include "caffe/blob.hpp" #include "caffe/data_transformer.hpp" #include "caffe/internal_thread.hpp" #include "caffe/layer.hpp" #include "caffe/layers/base_data_layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/db.hpp" namespace caffe { template class DataLayer : public BasePrefetchingDataLayer { public: explicit DataLayer(const LayerParameter& param); virtual ~DataLayer(); virtual void DataLayerSetUp(const vector*>& bottom, const vector*>& top); virtual inline const char* type() const { return "Data"; } virtual inline int ExactNumBottomBlobs() const { return 0; } virtual inline int MinTopBlobs() const { return 1; } virtual inline int MaxTopBlobs() const { return 2; } protected: void Next(); bool Skip(); virtual void load_batch(Batch* batch); shared_ptr db_; shared_ptr cursor_; uint64_t offset_; }; } // namespace caffe #endif // CAFFE_DATA_LAYER_HPP_