Skip to content
Snippets Groups Projects
Neuron.h 2.03 KiB
Newer Older
/**
 * DESCRIPTION OF THE CLASS
 *
 * @author Martin Beseda
 * @author Martin Mrovec
 * @author Michal Kravčenko
 * @date 2017 - 2018
 */
Michal Kravcenko's avatar
Michal Kravcenko committed
//TODO  correct docs in this and all child classes
#include <boost/serialization/base_object.hpp>
Michal Kravcenko's avatar
Michal Kravcenko committed
class IDifferentiable;
  * Abstract class representing a general neuron
  */
Michal Kravcenko's avatar
Michal Kravcenko committed
class Neuron {
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version){};
public:

    /**
     * Destructor of the Neuron object
     * this level deallocates the array 'activation_function_parameters'
     * also deallocates the OUTGOING connections
Michal Kravcenko's avatar
Michal Kravcenko committed
     * Performs the activation function and returns the result
    LIB4NEURO_API virtual double activate( double x, double b ) = 0;
}; /* 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 IDifferentiable {

    /**
     * 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;
Michal Kravcenko's avatar
Michal Kravcenko committed

    /**
     * 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
     */
Michal Kravcenko's avatar
Michal Kravcenko committed
    virtual Neuron* get_derivative( ) = 0;
}; /* end of IDifferentiable class */

 #endif /* NEURON_H_ */