Newer
Older
#ifndef NEURON_H_
#define NEURON_H_
/**
* A file containing the mother classe representing neurons
* in neural networks.
*
* @author Martin Beseda
* @author Martin Mrovec
* @author Michal Kravčenko
* @date 2017 - 2018
*/
/**
* Abstract class representing a general neuron
*/
class Neuron{
/**
* Inner potential of the neuron (input of the activation function)
*/
double potential = 0.0;
/**
* State of the neuron (output of the activation function)
*/
double state = 0.0;
/**
* array of the activation function parameters
*/
double *activation_function_parameters = nullptr;
/**
* Number of parameters of the activation function
*/
int n_activation_function_parameters = 0;
public:
/**
* Destructor of the Neuron object
* this level deallocates the array 'activation_function_parameters'
*/
virtual ~Neuron();
/**
* Performs the activation function and stores the result into the 'state' property
*/
virtual void activate( ) = 0;
/**
* Adds the input signal value to the current potential
* @param[in] input_signal Input value
*/
virtual void adjust_potential(double input_signal);
/**
* Getter to the 'potential' property
* @return Value of the neuron's potential (real number)
*/
virtual double get_potential();
/**
* Setter to the 'potential' property
* @param[in] value Value of the neuron's potential (real number)
*/
virtual void set_potential(double value);
/**
* Getter to the 'state' property
* @return Value of the current neuron's state
*/
virtual double get_state();
/**
* Setter to the 'state' component
* @param[in] value Value of the current neuron's state
*/
virtual void set_state(double value);
/**
* Returns the number of parameters the activation function relies on
* @return Number of the parameters
*/
virtual int activation_function_get_n_parameters();
/**
* Calculates the partial derivative of the activation function
* with respect to the parameter and the current potential
* @param[in] param_idx Index of the parameter to calculate derivative of
* @return Partial derivative of the activation function according to the
* 'param_idx'-th parameter
*/
virtual double activation_function_get_partial_derivative(int param_idx) = 0;
/**
* 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_get_derivative( ) = 0;
/**
* Adjusts the parameter with index 'param_idx' of the activation function
* by the value prescribed by 'value'
* @param[in] param_idx Index of the parameter to be adjusted
* @param[in] value Value of the adjustment
*/
virtual void activation_function_adjust_parameter(int param_idx, double value);
/**
* Sets the parameter with index 'param_idx' of the activation function
* to the value prescribed by 'value'
* @param[in] param_idx
* @param[in] value
*/
virtual void activation_function_set_parameter(int param_idx, double value);
/**
* Gets the parameter with index 'param_idx' of the activation function
* @param[in] param_idx
*/
virtual double activation_function_get_parameter(int param_idx);
}; /* end of Neuron class */
#endif /* NEURON_H_ */