Something went wrong on our end
-
Michal Kravcenko authoredMichal Kravcenko authored
Neuron.h 2.56 KiB
/**
* DESCRIPTION OF THE CLASS
*
* @author Martin Beseda
* @author Martin Mrovec
* @author Michal Kravčenko
* @date 2017 - 2018
*/
//TODO correct docs in this and all child classes
#ifndef NEURON_H_
#define NEURON_H_
#include "../settings.h"
#include <vector>
namespace lib4neuro {
/**
*
*/
enum NEURON_TYPE {
BINARY,
CONSTANT,
LINEAR,
LOGISTIC
};
/**
* Abstract class representing a general neuron
*/
class Neuron {
protected:
/**
* holds the last value of the activation function, used by this->activate
*/
double activation_val;
public:
/**
* Struct used to access private properties from
* the serialization function
*/
struct access;
/**
* Destructor of the Neuron object
* this level deallocates the array 'activation_function_parameters'
* also deallocates the OUTGOING connections
*/
LIB4NEURO_API virtual ~Neuron();
/**
* Performs the activation function and returns the result
*/
LIB4NEURO_API virtual double activate(double x, double b) = 0;
/**
* returns the last value of the actual activation function output for this neuron
* @return
*/
LIB4NEURO_API virtual double get_last_activation_value( );
}; /* end of Neuron class */
/**
* Class serving as an interface providing 'activation_function_eval_partial_derivative',
* 'activation_function_eval_derivative', 'get_partial_derivative' and
* 'get_derivative' methods.
*/
class NeuronDifferentiable : public Neuron {
public:
/**
* Calculates the derivative with respect to the argument, ie the 'potential'
* @return f'(x), where 'f(x)' is the activation function and 'x' = 'potential'
*/
virtual double activation_function_eval_derivative(double x, double b) = 0;
/**
* Calculates the derivative with respect to the bias
* @return d/db f'(x), where 'f(x)' is the activation function, 'x' is the 'potential'
* and 'b' is the bias
*/
virtual double activation_function_eval_derivative_bias(double x, double b) = 0;
/**
* Returns a Neuron pointer object with activation function being the partial derivative of
* the activation function of this Neuron object with respect to the argument, i.e. 'potential'
* @return
*/
virtual Neuron *get_derivative() = 0;
};
}
#endif /* NEURON_H_ */