-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathneuron.h
79 lines (62 loc) · 1.86 KB
/
neuron.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
* neuron.h
*
* Version information
* Author: Conall Hanley
* Date:19/01/2020
* Description: This file is the header file for the neuron class and declares the class interface.
*
* Copyright notice -
*/
#pragma once
#include <vector>
#include <algorithm>
#include <math.h>
#include <CL/opencl.hpp>
#include "my_math.h"
class neuron
{
private:
int number_;
int weightcount_ = 0;
//std::vector<int> condition_; //conditions
double activation_ = 0.0;
double* weights_ = nullptr;
double bias_;
double delta_;
const double* euler_; //Euler constant
double moment1 = 0.0;
double moment2 = 0.0;
// double output_;
public:
neuron(double* euler); //default constructor
neuron(int num, double bias, const double* euler); //custom constructor
~neuron();//destructor
double calculateoutput_sigmoid(std::vector<double>& inputs, double weights[], int weightcount);
double calculateoutput_relu(std::vector<double>& inputs, double weights[], int weightcount);
// double getoutput() const;
double* getweights() const;
//void addweight();
void setweights(std::vector<double> weights);
void setweights(double weights[], int count);
void addweights(double weights[]);
void divideweights(int divisor);
int get_weight_count();
void clear_weights();
double getbias() const;
void setbias(double bias);
void dividebias(int divisor);
int getnumber() const;
void setnumber(int num);
double tranfer_derivitive();
void set_activation(double act);
double get_activation();
void init_activation();
void clear_activation();
double get_delta();
void set_delta(double delta);
double get_first_moment();
void set_first_moment(double m);
double get_second_moment();
void set_second_moment(double m);
};