#ifndef CAFFE_SPLIT_BY_PHASE_LAYER_HPP_ #define CAFFE_SPLIT_BY_PHASE_LAYER_HPP_ #include #include "caffe/blob.hpp" #include "caffe/layer.hpp" #include "caffe/proto/caffe.pb.h" namespace caffe { template class SplitByPhaseLayer: public Layer { public: explicit SplitByPhaseLayer(const LayerParameter& param) : Layer(param) {} virtual void LayerSetUp(const vector*>& bottom, const vector*>& top); virtual void Reshape(const vector*>& bottom, const vector*>& top); virtual inline const char* type() const { return "SplitByPhase"; } virtual inline int ExactNumBottomBlobs() const { return 1; } virtual inline int ExactNumTopBlobs() const { return 1; } protected: virtual void Forward_cpu(const vector*>& bottom, const vector*>& top); virtual void Forward_gpu(const vector*>& bottom, const vector*>& top); virtual void Backward_cpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); virtual void Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); shared_ptr > bias_layer_; vector*> bias_bottom_vec_; vector bias_propagate_down_; int bias_param_id_; Blob sum_multiplier_; Blob sum_result_; Blob temp_; int axis_; int outer_dim_, scale_dim_, inner_dim_; int num_images_; int num_filters_; int height_; int width_; }; } // namespace caffe #endif // CAFFE_SPLIT_BY_PHASE_LAYER_HPP_