#ifndef CAFFE_INPUT_LAYER_HPP_
#define CAFFE_INPUT_LAYER_HPP_
#include
#include "caffe/blob.hpp"
#include "caffe/layer.hpp"
#include "caffe/proto/caffe.pb.h"
namespace caffe {
/**
* @brief Provides data to the Net by assigning tops directly.
*
* This data layer is a container that merely holds the data assigned to it;
* forward, backward, and reshape are all no-ops.
*/
template
class InputLayer : public Layer {
public:
explicit InputLayer(const LayerParameter& param)
: Layer(param) {}
virtual void LayerSetUp(const vector& bottom,
const vector& top);
// Data layers should be shared by multiple solvers in parallel
virtual inline bool ShareInParallel() const { return true; }
// Data layers have no bottoms, so reshaping is trivial.
virtual void Reshape(const vector& bottom,
const vector& top) {}
virtual inline const char* type() const { return "Input"; }
virtual inline int ExactNumBottomBlobs() const { return 0; }
virtual inline int MinTopBlobs() const { return 1; }
protected:
virtual void Forward_cpu(const vector& bottom,
const vector& top) {}
virtual void Backward_cpu(const vector& top,
const vector& propagate_down, const vector& bottom) {}
};
} // namespace caffe
#endif // CAFFE_INPUT_LAYER_HPP_