Skip to content
Snippets Groups Projects
Neuron.h 2.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     * 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
    
            BINARY,
            CONSTANT,
            LINEAR,
            LOGISTIC
        };
    
        /**
          * Abstract class representing a general neuron
          */
    
        protected:
            /**
             * holds the last value of the activation function, used by this->activate
             */
            double activation_val;
    
    
            /**
             * 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( );
    
    
     * 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_ */