Something went wrong on our end
-
Michal Kravcenko authored
- Added preliminary connection classes with neural network class able to evaluate inputs via the feed-forward method. - Added a test case for validating feed-forward capabilities of our networks
Michal Kravcenko authored- Added preliminary connection classes with neural network class able to evaluate inputs via the feed-forward method. - Added a test case for validating feed-forward capabilities of our networks
NeuronLogistic.cpp 1.51 KiB
//
// Created by fluffymoo on 11.6.18.
//
#include "NeuronLogistic.h"
NeuronLogistic::NeuronLogistic(double a, double b) {
this->activation_function_parameters = new double[2];
this->activation_function_parameters[0] = a;
this->activation_function_parameters[1] = b;
this->edges_in = new std::vector<Connection*>(0);
this->edges_out = new std::vector<Connection*>(0);
}
void NeuronLogistic::activate( ) {
double a = this->activation_function_parameters[0];
double b = this->activation_function_parameters[1];
double x = this->potential;
double ex = std::pow(E, a - x);
this->state = std::pow(1.0 + ex, -b);
}
double NeuronLogistic::activation_function_get_partial_derivative(int param_idx ) {
double a = this->activation_function_parameters[0];
double b = this->activation_function_parameters[1];
double x = this->potential;
if(param_idx == 0){
double ex = std::pow(E, a - x);
double exa= -std::pow(ex + 1.0, -b);
return exa * std::log(ex + 1.0);
}
else if(param_idx == 1){
double ex = std::pow(E, a - x);
double ex2 = std::pow(ex + 1.0, -b - 1.0);
return -b * ex * ex2;
}
return 0.0;
}
double NeuronLogistic::activation_function_get_derivative( ) {
double a = this->activation_function_parameters[0];
double b = this->activation_function_parameters[1];
double x = this->potential;
double ex = std::pow(E, a - x);
double ex2 = std::pow(ex + 1.0, -b - 1.0);
return b * ex * ex2;
}