// @(#)root/mlp:$Name: $:$Id: TSynapse.cxx,v 1.5 2004/09/29 10:55:55 rdm Exp $
// Author: Christophe.Delaere@cern.ch 21/08/2002
/*************************************************************************
* Copyright (C) 1995-2003, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
///////////////////////////////////////////////////////////////////////////
//
// TSynapse
//
// This is a simple weighted bidirectionnal connection between
// two neurons.
// A network is built connecting two neurons by a synapse.
// In addition to the value, the synapse can return the DeDw
//
///////////////////////////////////////////////////////////////////////////
#include "TSynapse.h"
#include "TNeuron.h"
#include "Riostream.h"
ClassImp(TSynapse)
//______________________________________________________________________________
TSynapse::TSynapse()
{
// Default constructor
fpre = NULL;
fpost = NULL;
fweight = 1;
fDEDw = 0;
}
//______________________________________________________________________________
TSynapse::TSynapse(TNeuron * pre, TNeuron * post, Double_t w)
{
// Constructor that connects two neurons
fpre = pre;
fpost = post;
fweight = w;
fDEDw = 0;
pre->AddPost(this);
post->AddPre(this);
}
//______________________________________________________________________________
void TSynapse::SetPre(TNeuron * pre)
{
// Sets the pre-neuron
if (pre) {
Error("SetPre","this synapse is already assigned to a pre-neuron.");
return;
}
fpre = pre;
pre->AddPost(this);
}
//______________________________________________________________________________
void TSynapse::SetPost(TNeuron * post)
{
// Sets the post-neuron
if (post) {
Error("SetPost","this synapse is already assigned to a post-neuron.");
return;
}
fpost = post;
post->AddPre(this);
}
//______________________________________________________________________________
Double_t TSynapse::GetValue() const
{
// Returns the value: weithted input
if (fpre)
return (fweight * fpre->GetValue());
return 0;
}
//______________________________________________________________________________
Double_t TSynapse::GetDeDw() const
{
// Computes the derivative of the error wrt the synapse weight.
if (!(fpre && fpost))
return 0;
return (fpre->GetValue() * fpost->GetDeDw());
}
//______________________________________________________________________________
void TSynapse::SetWeight(Double_t w)
{
// Sets the weight of the synapse.
// This weight is the multiplying factor applied on the
// output of a neuron in the linear combination given as input
// of another neuron.
fweight = w;
}
//______________________________________________________________________________
void TSynapse::SetDEDw(Double_t in)
{
// Sets the derivative of the total error wrt the synapse weight
fDEDw = in;
}
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.