Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-02 08:48:23

0001 /*
0002  * Perceptron.h
0003  *
0004  *  Created on: Apr 23, 2016
0005  *      Author: Pawel Sznajder
0006  */
0007 
0008 #ifndef PERCEPTRON_H_
0009 #define PERCEPTRON_H_
0010 
0011 #include <string>
0012 
0013 #include "../beans/ActivationFunctionType.h"
0014 #include "../beans/CombinationFunctionType.h"
0015 #include "NeuralNetworkCell.h"
0016 
0017 namespace NumA {
0018 
0019 class ActivationFunction;
0020 class CombinationFunction;
0021 
0022 class Perceptron: public NeuralNetworkCell {
0023 
0024 public:
0025 
0026     static const unsigned int classId;
0027 
0028     Perceptron();
0029     Perceptron(ActivationFunctionType::Type activationFunctionType,
0030             CombinationFunctionType::Type combinationFunctionType);
0031     virtual ~Perceptron();
0032     virtual Perceptron* clone() const;
0033     virtual std::string toString() const;
0034 
0035     virtual void evaluate();
0036     virtual double evaluateDerivativeBackward(
0037             NeuralNetworkNeuron* const neuron) const;
0038 
0039     virtual void checkConsistency() const;
0040 
0041     ActivationFunctionType::Type getActivationFunctionType() const;
0042     CombinationFunctionType::Type getCombinationFunctionType() const;
0043 
0044     double getBias() const;
0045     void setBias(double bias);
0046 
0047     void fixBias();
0048     void releaseBias();
0049     bool isBiasFixed() const;
0050 
0051     double evaluateFirstDerivatieOfActivationFunction() const;
0052     double evaluateFirstPartialDerivatieOfCombinationFunctionForNeuron(
0053             const NeuralNetworkNeuron* const neuron) const;
0054     double evaluateFirstPartialDerivatieOfCombinationFunctionForBias() const;
0055 
0056 protected:
0057 
0058     Perceptron(const Perceptron& other);
0059 
0060 private:
0061 
0062     double m_bias;
0063     bool m_fixedBias;
0064     ActivationFunctionType::Type m_activationFunctionType;
0065     CombinationFunctionType::Type m_combinationFunctionType;
0066     ActivationFunction* m_pActivationFunction;
0067     CombinationFunction* m_pCombinationFunction;
0068 };
0069 
0070 }
0071 
0072 #endif /* PERCEPTRON_H_ */