10 #include <sys/resource.h>
58 #define RANDOM_CLAMP (((double)rand()-(float)rand())/10000000)
61 #define RANDOM_NUM ((double)rand()/(10000000+1))
76 Dendrite(
double weight = 0.0,
double weight_ancient = 0.0,
double weight_actual = 0.0,
unsigned long points_to = 0){
98 Neuron(
unsigned long ID = 0,
double value = 0.0,
double bias = 0.0){
110 for(
unsigned long i = 0; i < dendrite; i++){
173 int SetData(
double learning_rate,
int layers[],
int tot_layers) {
175 if (tot_layers<2)
return(-1);
185 for(
int i = 0; i < tot_layers; i++){
221 if(i != net_tot_layers-1){
225 for(k = 0; k < net_layers[i+1]; k++){
252 for(j = 0; j < net_layers[i]; j++){
256 for(k = 0; k < net_layers[i-1]; k++){
268 for(i = 0; i < net_layers[net_tot_layers-1]; i++){
327 return (1.0/(1+exp(-value)));
337 gettimeofday( &time, (
struct timezone *)NULL );
338 seconds = (int)time.tv_usec;
340 time_t timer = time( NULL );
341 struct tm *tblock = localtime(&timer);
342 seconds = tblock->tm_sec;
349 #ifdef _GLIBCPP_HAVE_DRAND48
361 for(
int i = 0; i <
net_layers[layer_no+1]; i++) {
390 for(
int i = 0; i < max_pattern; i++){
399 for(
int i = 0; i < max_pattern; i++){
408 int Train(vector<double> inputs, vector<double> outputs,
int number_pattern,
int max_pattern,
double momentum){
412 double *Target =
new double;
413 double *Delta =
new double;
414 double *Actual =
new double;
415 double *
error =
new double;;
425 if(number_pattern == 0){
437 (*Target) = outputs[j];
440 (*Delta) = ((*Target) - (*Actual)) * (*Actual) * (1 - (*Actual));
445 for(k = 0; k < net_layers[i-1]; k++) {
456 *error = ((*Target) - (*Actual));
466 for(k = 0; k < net_layers[i-1]; k++) {
487 if(number_pattern == (max_pattern - 1)){
504 void trainingEpoch(
unsigned long actual_epoch,
double epoch_total,
int patterns){
509 progress = (float)(1.0-(epoch_total - (actual_epoch+1.0))/(epoch_total));
void trainingEpoch(unsigned long actual_epoch, double epoch_total, int patterns)
Dendrite(double weight=0.0, double weight_ancient=0.0, double weight_actual=0.0, unsigned long points_to=0)
void addError(int max_pattern)
void setWeight(int i, int j, int k, double w)
double getWeight(int i, int j, int k) const
int Train(vector< double > inputs, vector< double > outputs, int number_pattern, int max_pattern, double momentum)
void setBias(int i, int j, double b)
void SetInputs(vector< double > inputs) const
unsigned long d_points_to
double * mean_square_error
void Initialize(int size)
double getBias(int i, int j) const
int trainingMinimumError(int patterns, double min_error)
void SetDendrites(unsigned long dendrite)
Neuron GetNeuron(int index)
void SetNeuron(Neuron neuron, int index)
double Limiter(double value) const
Neuron(unsigned long ID=0, double value=0.0, double bias=0.0)
int SetData(double learning_rate, int layers[], int tot_layers)
void setError(int max_pattern)
double SigmaWeightDelta(unsigned long layer_no, unsigned long neuron_no)
double * GetOutput(void) const