// // 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; } 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, b - x); this->state = std::pow(1.0 + ex, -a); } 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, b - x); double exa= -std::pow(ex + 1.0, -a); return exa * std::log(ex + 1.0); } else{ double ex = std::pow(E, b - x); double ex2 = std::pow(ex + 1.0, -a - 1.0); return -a * ex * ex2; } } 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, b - x); double ex2 = std::pow(ex + 1.0, -a - 1.0); return a * ex * ex2; }