c33746c4484764a3aa112523d0831b5f07b541df
1 #include "caffeine/layer.hpp"
3 namespace caffeine {
5 // Forward, backward and predict wrappers. You should implement the cpu and
6 // gpu specific implementations instead, and should not change these
7 // functions.
8 template <typename Dtype>
9 inline void Layer<Dtype>::Forward(const vector<Blob<Dtype>*>& bottom,
10 vector<Blob<Dtype>*>* top) {
11 switch(Caffeine::mode()) {
12 case Caffeine::CPU:
13 Forward_cpu(bottom, top);
14 break;
15 case Caffeine::GPU:
16 Forward_gpu(bottom, top);
17 break;
18 default:
19 LOG(FATAL) << "Unknown caffeine mode.";
20 }
21 };
23 template <typename Dtype>
24 inline Dtype Layer<Dtype>::Backward(const vector<Blob<Dtype>*>& top,
25 const bool propagate_down,
26 vector<Blob<Dtype>*>* bottom) {
27 switch(Caffeine::mode()) {
28 case Caffeine::CPU:
29 return Backward_cpu(top, propagate_down, bottom);
30 break;
31 case Caffeine::GPU:
32 return Backward_gpu(top, propagate_down, bottom);
33 break;
34 default:
35 LOG(FATAL) << "Unknown caffeine mode.";
36 }
37 };
39 template class Layer<float>;
40 template class Layer<double>;
42 } // namespace caffeine