5a74ce5ade9dc12cd7c565bcc9bd7d33f34e27f8
[platform/upstream/caffeonacl.git] / include / caffe / layers / acl_tanh_layer.hpp
1 #ifndef CAFFE_ACL_TANH_LAYER_HPP_
2 #define CAFFE_ACL_TANH_LAYER_HPP_
3
4 #include <vector>
5
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9
10 #include "caffe/layers/neuron_layer.hpp"
11 #include "caffe/layers/tanh_layer.hpp"
12
13 #ifdef USE_ACL
14 #include "caffe/acl_layer.hpp"
15 #include "caffe/layers/acl_base_activation_layer.hpp"
16 #endif
17
18 namespace caffe {
19
20 #ifdef USE_ACL
21 /**
22  * @brief ACL acceleration of TanHLayer.
23  *        Fallback to TanHLayer for some corner cases. 
24  */
25 template <typename Dtype>
26 class ACLTanHLayer : public ACLBaseActivationLayer<Dtype>,public TanHLayer<Dtype> {
27  public:
28   explicit ACLTanHLayer(const LayerParameter& param)
29       : ACLBaseActivationLayer<Dtype>(param),TanHLayer<Dtype>(param) {}
30   virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
31       const vector<Blob<Dtype>*>& top);
32   virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
33       const vector<Blob<Dtype>*>& top);
34   virtual ~ACLTanHLayer();
35
36  protected:
37   virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
38       const vector<Blob<Dtype>*>& top);
39   virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
40       const vector<Blob<Dtype>*>& top);
41   virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
42       const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom){
43                   NOT_IMPLEMENTED;
44       }
45   virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
46       const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom){
47                   NOT_IMPLEMENTED;
48       }
49   virtual void SetupACLLayer(const vector<Blob<Dtype>*>& bottom,
50       const vector<Blob<Dtype>*>& top, ActivationLayerInfo::ActivationFunction type);
51 };
52 #endif
53
54 }  // namespace caffe
55
56 #endif  // CAFFE_ACL_TANH_LAYER_HPP_