File indexing completed on 2026-06-02 08:48:23
0001
0002
0003
0004
0005
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