Logo ROOT  
Reference Guide
TSynapse.cxx
Go to the documentation of this file.
1 // @(#)root/mlp:$Id$
2 // Author: Christophe.Delaere@cern.ch 21/08/2002
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2003, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 /** \class TSynapse
13 
14 This is a simple weighted bidirectional connection between
15 two neurons.
16 A network is built connecting two neurons by a synapse.
17 In addition to the value, the synapse can return the DeDw
18 
19 */
20 
21 #include "TSynapse.h"
22 #include "TNeuron.h"
23 
25 
26 ////////////////////////////////////////////////////////////////////////////////
27 /// Default constructor
28 
30 {
31  fpre = 0;
32  fpost = 0;
33  fweight = 1;
34  fDEDw = 0;
35 }
36 
37 ////////////////////////////////////////////////////////////////////////////////
38 /// Constructor that connects two neurons
39 
41 {
42  fpre = pre;
43  fpost = post;
44  fweight = w;
45  fDEDw = 0;
46  pre->AddPost(this);
47  post->AddPre(this);
48 }
49 
50 ////////////////////////////////////////////////////////////////////////////////
51 /// Sets the pre-neuron
52 
54 {
55  if (fpre) {
56  Error("SetPre","this synapse is already assigned to a pre-neuron.");
57  return;
58  }
59  fpre = pre;
60  pre->AddPost(this);
61 }
62 
63 ////////////////////////////////////////////////////////////////////////////////
64 /// Sets the post-neuron
65 
67 {
68  if (fpost) {
69  Error("SetPost","this synapse is already assigned to a post-neuron.");
70  return;
71  }
72  fpost = post;
73  post->AddPre(this);
74 }
75 
76 ////////////////////////////////////////////////////////////////////////////////
77 /// Returns the value: weighted input
78 
80 {
81  if (fpre)
82  return (fweight * fpre->GetValue());
83  return 0;
84 }
85 
86 ////////////////////////////////////////////////////////////////////////////////
87 /// Computes the derivative of the error wrt the synapse weight.
88 
90 {
91  if (!(fpre && fpost))
92  return 0;
93  return (fpre->GetValue() * fpost->GetDeDw());
94 }
95 
96 ////////////////////////////////////////////////////////////////////////////////
97 /// Sets the weight of the synapse.
98 /// This weight is the multiplying factor applied on the
99 /// output of a neuron in the linear combination given as input
100 /// of another neuron.
101 
103 {
104  fweight = w;
105 }
106 
107 ////////////////////////////////////////////////////////////////////////////////
108 /// Sets the derivative of the total error wrt the synapse weight
109 
111 {
112  fDEDw = in;
113 }
114 
115 
TSynapse::SetPost
void SetPost(TNeuron *post)
Sets the post-neuron.
Definition: TSynapse.cxx:66
TSynapse::TSynapse
TSynapse()
Default constructor.
Definition: TSynapse.cxx:29
TNeuron::GetValue
Double_t GetValue() const
Computes the output using the appropriate function and all the weighted inputs, or uses the branch as...
Definition: TNeuron.cxx:944
ClassImp
#define ClassImp(name)
Definition: Rtypes.h:364
TObject::Error
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:890
TSynapse::GetDeDw
Double_t GetDeDw() const
Computes the derivative of the error wrt the synapse weight.
Definition: TSynapse.cxx:89
TSynapse::SetWeight
void SetWeight(Double_t w)
Sets the weight of the synapse.
Definition: TSynapse.cxx:102
TSynapse::fweight
Double_t fweight
the weight of the synapse
Definition: TSynapse.h:39
TNeuron::GetDeDw
Double_t GetDeDw() const
Computes the derivative of the error wrt the neuron weight.
Definition: TNeuron.cxx:1080
TNeuron::AddPost
void AddPost(TSynapse *)
Adds a synapse to the neuron as an output This method is used by the TSynapse while connecting two ne...
Definition: TNeuron.cxx:842
TSynapse::fDEDw
Double_t fDEDw
! the derivative of the total error wrt the synapse weight
Definition: TSynapse.h:40
TSynapse::SetPre
void SetPre(TNeuron *pre)
Sets the pre-neuron.
Definition: TSynapse.cxx:53
TSynapse::fpre
TNeuron * fpre
the neuron before the synapse
Definition: TSynapse.h:37
TSynapse::fpost
TNeuron * fpost
the neuron after the synapse
Definition: TSynapse.h:38
TNeuron::AddPre
void AddPre(TSynapse *)
Adds a synapse to the neuron as an input This method is used by the TSynapse while connecting two neu...
Definition: TNeuron.cxx:830
Double_t
double Double_t
Definition: RtypesCore.h:59
TSynapse::GetValue
Double_t GetValue() const
Returns the value: weighted input.
Definition: TSynapse.cxx:79
TSynapse
Definition: TSynapse.h:20
TSynapse::SetDEDw
void SetDEDw(Double_t in)
Sets the derivative of the total error wrt the synapse weight.
Definition: TSynapse.cxx:110
TNeuron
Definition: TNeuron.h:25