Deep network
layer.hpp
Go to the documentation of this file.
1#ifndef LAYER_HPP
2#define LAYER_HPP
3
4#include "debug.hpp"
5#include "vector.hpp"
6#include "shape.hpp"
7#include <cmath>
8
9namespace Layer{
20 class Layer{
21 public:
23 string name;
24
26 size_t n;
27
29 size_t m;
30
33
36
39
40 Layer(size_t n,size_t m);
41
42 ~Layer();
43
45 size_t get_input_size() const;
46
48 size_t get_output_size() const;
49
51 Vector get_output() const;
52
55
57 virtual void init_nabla()=0;
58
62
64 virtual void update(Real eta)=0;
65 };
66
67 inline
68 Layer::Layer(size_t n_,size_t m_){
69 n=n_;
70 m=m_;
71 y=init_vector(m);
72 d=init_vector(n);
73 }
74
75 inline
76 Layer::~Layer(){
79 }
80
81 inline size_t
82 Layer::get_input_size() const{
83 return n;
84 }
85
86 inline size_t
87 Layer::get_output_size() const{
88 return m;
89 }
90
91 inline Vector
92 Layer::get_output() const{
93 return y;
94 }
95}
96
97#endif
Definition: layer.hpp:20
string name
Definition: layer.hpp:23
virtual void init_nabla()=0
size_t m
Definition: layer.hpp:29
virtual void update(Real eta)=0
size_t n
Definition: layer.hpp:26
Vector y
Definition: layer.hpp:35
virtual Vector back_propagation(Vector e)=0
virtual Vector feed_forward(Vector x)=0
Vector x
Definition: layer.hpp:32
Vector d
Definition: layer.hpp:38
Definition: activation.hpp:7
void delete_vector(Vector v)
Definition: vector.hpp:53
double Real
Definition: vector.hpp:9
Vector init_vector(size_t n)
Definition: vector.hpp:48
Real * Vector
Definition: vector.hpp:45