LCFIVertex  0.7.2
LinearNeuron.h
1 #ifndef LINEARNEURON_H
2 #define LINEARNEURON_H
3 
4 #include "NeuralNetConfig.h"
5 #include "Neuron.h"
6 
7 #include <iostream>
8 #include <string>
9 
10 //namespace nnet added 15/08/06 by Mark Grimes (mark.grimes@bristol.ac.uk) for the LCFI vertex package
11 namespace nnet
12 {
13 
14 class NeuralNet;
15 
16 class NEURALNETDLL LinearNeuron :
17  public Neuron
18 {
19 public:
20  LinearNeuron(const int numberOfInputs,const double slopeEnd=0.5,const double bias=-1.0,const NeuralNet *parent=0);
21  void destroy() const;
22  double slopeEnd() const {return _slopeEnd;}
23  void setSlopeEnd(const double slopeEnd);
24  Neuron *clone(const NeuralNet *parentNetwork) const;
25  void outputRange(double &outputmin,double &outputmax) const
26  { outputmin = -1.0; outputmax = 1.0;}
27 
28 protected:
29  ~LinearNeuron(void);
30  double thresholdFunction(const double activation) const;
31  double derivative(const double x) const;
32  void serialiseExtra(std::ostream &os) const;
33  std::string neuronType() const {return "LinearNeuron";}
34 
35 private:
36  LinearNeuron(const LinearNeuron &other); // Declared but not defined
37  double _slopeEnd;
38 };
39 
40 }//namespace nnet
41 
42 #endif