58 lines
1.7 KiB
C++
58 lines
1.7 KiB
C++
#ifndef CAFFE_SPLIT_BY_PHASE_LAYER_HPP_
|
|
#define CAFFE_SPLIT_BY_PHASE_LAYER_HPP_
|
|
|
|
#include <vector>
|
|
|
|
#include "caffe/blob.hpp"
|
|
#include "caffe/layer.hpp"
|
|
#include "caffe/proto/caffe.pb.h"
|
|
|
|
namespace caffe {
|
|
|
|
template <typename Dtype>
|
|
class SplitByPhaseLayer: public Layer<Dtype> {
|
|
public:
|
|
explicit SplitByPhaseLayer(const LayerParameter& param)
|
|
: Layer<Dtype>(param) {}
|
|
virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
|
|
const vector<Blob<Dtype>*>& top);
|
|
virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
|
|
const vector<Blob<Dtype>*>& 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<Blob<Dtype>*>& bottom,
|
|
const vector<Blob<Dtype>*>& top);
|
|
virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
|
|
const vector<Blob<Dtype>*>& top);
|
|
virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
|
|
const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
|
|
virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
|
|
const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
|
|
|
|
shared_ptr<Layer<Dtype> > bias_layer_;
|
|
vector<Blob<Dtype>*> bias_bottom_vec_;
|
|
vector<bool> bias_propagate_down_;
|
|
int bias_param_id_;
|
|
|
|
Blob<Dtype> sum_multiplier_;
|
|
Blob<Dtype> sum_result_;
|
|
Blob<Dtype> 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_
|