From c5aa7ab9060263d0e626b241a7269649a0403a63 Mon Sep 17 00:00:00 2001 From: Soikk Date: Tue, 23 Aug 2022 13:37:28 +0200 Subject: Reorganized nnet --- nnet.h | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 nnet.h (limited to 'nnet.h') diff --git a/nnet.h b/nnet.h new file mode 100644 index 0000000..81f7574 --- /dev/null +++ b/nnet.h @@ -0,0 +1,69 @@ +#include +#include +#include +#include +#include +#include + + +typedef enum{ + LINEAR, + SIGMOID, +} functions; + +typedef struct{ + double weight; + double data; +} branch; + +typedef struct{ + functions function; + int size; + branch *branches; + double bias; + double out; +} neuron; + +typedef struct{ + int size; + neuron **neurons; +} layer; + +typedef struct lnode{ + layer layer; + struct lnode *next; +} lnode; + +typedef struct{ + int layers; + lnode *head; +} net; + + +double drand(double high, double low); + +branch createBranch(double weight, double data); + +neuron *createNeuron(double bias, functions function, int size, ...); + +void addBranch(neuron *n, double weight); + +void addBranches(neuron *n, int size, double *data); + +void changeFunction(neuron *n, functions function); + +int changeWeight(neuron *n, int pos, double weight); + +int inputNeuron(neuron *n, int pos, double data); + +double rawValue(neuron *n); + +double outputNeuron(neuron *n); + +layer createLayer(int size, ...); + +net createNet(int layers, ...); + +double *propagateLayer(layer *l, int size, double *data); + +double *propagate(net *nt, ...); -- cgit v1.2.3