Deep network
activation.hpp
Go to the documentation of this file.
1#ifndef ACTIVATION_LAYER_HPP
2#define ACTIVATION_LAYER_HPP
3
4#include "layer.hpp"
5#include "math.hpp"
6
7namespace Layer{
10 Sigmoid
11 };
12
14 template<ActivationMap A> Real activation_map(Real);
15
17 template<ActivationMap A> Real activation_diff_map(Real);
18
23 template<ActivationMap A> class ActivationLayer:public Layer{
24 public:
25 ActivationLayer(const size_t);
28 Vector feed_forward(Vector x) override;
30 void init_nabla() override {};
32 Vector back_propagation(Vector e) override;
34 void update(Real eta) override{};
35 };
36
37 template<ActivationMap A>
38 inline
40 }
41
42 template<ActivationMap A>
43 inline Vector
45 x=x_;
46 for(size_t i=0;i<n;++i){
47 y[i]=activation_map<A>(x[i]);
48 }
49 return y;
50 }
51
52 template<ActivationMap A>
53 inline Vector
55 for(size_t i=0;i<n;++i){
56 d[i]=activation_diff_map<A>(x[i])*e[i];
57 }
58 return d;
59 }
60
61 template<>
62 inline Real
64 return 1.0/(1.0+exp(-x));
65 }
66
67 template<>
68 inline Real
71 return t*(1.0-t);
72 }
73}
74#endif
Definition: activation.hpp:23
void init_nabla() override
Definition: activation.hpp:30
ActivationLayer(const size_t)
Definition: activation.hpp:39
Vector feed_forward(Vector x) override
Definition: activation.hpp:44
~ActivationLayer()
Definition: activation.hpp:26
Vector back_propagation(Vector e) override
Definition: activation.hpp:54
void update(Real eta) override
Definition: activation.hpp:34
Vector x
Definition: layer.hpp:32
Definition: activation.hpp:7
ActivationMap
Definition: activation.hpp:9
@ Sigmoid
Definition: activation.hpp:10
Real activation_map< Sigmoid >(Real x)
Definition: activation.hpp:63
Real activation_diff_map< Sigmoid >(Real x)
Definition: activation.hpp:69
Real activation_map(Real)
Real activation_diff_map(Real)
Real exp(Real x)
Definition: math.hpp:5
double Real
Definition: vector.hpp:9
Real * Vector
Definition: vector.hpp:45