00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkRBFBackPropagationLearningFunction_h
00018 #define __itkRBFBackPropagationLearningFunction_h
00019
00020 #include <iostream>
00021 #include "itkLightProcessObject.h"
00022 #include "itkLearningFunctionBase.h"
00023 #include "itkRBFLayer.h"
00024
00025 namespace itk
00026 {
00027 namespace Statistics
00028 {
00029
00030 template<class LayerType, class TTargetVector>
00031 class RBFBackPropagationLearningFunction : public LearningFunctionBase<LayerType, TTargetVector>
00032 {
00033 public:
00034
00035 typedef RBFBackPropagationLearningFunction Self;
00036 typedef LearningFunctionBase<LayerType, TTargetVector> Superclass;
00037 typedef SmartPointer<Self> Pointer;
00038 typedef SmartPointer<const Self> ConstPointer;
00039
00040 typedef typename LayerType::LayerInterfaceType LayerInterfaceType;
00042 itkTypeMacro(RBFBackPropagationLearningFunction, LearningFunctionBase);
00043
00045 itkNewMacro(Self);
00046
00047 typedef typename Superclass::ValueType ValueType;
00048
00049 virtual void Learn(LayerType* layer,ValueType learningrate);
00050 virtual void Learn(LayerType* layer, TTargetVector error, ValueType learningrate);
00051
00052 itkSetMacro(LearningRate1, ValueType);
00053 itkGetMacro(LearningRate1, ValueType);
00054 itkSetMacro(LearningRate2, ValueType);
00055 itkGetMacro(LearningRate2, ValueType);
00056 itkSetMacro(LearningRate3, ValueType);
00057 itkGetMacro(LearningRate3, ValueType);
00058
00059 protected:
00060
00061 RBFBackPropagationLearningFunction();
00062 virtual ~RBFBackPropagationLearningFunction() {};
00063
00065 virtual void PrintSelf( std::ostream& os, Indent indent ) const;
00066
00067 private:
00068
00069 ValueType m_LearningRate1;
00070 ValueType m_LearningRate2;
00071 ValueType m_LearningRate3;
00072 vnl_vector<ValueType> m_OutputErrors;
00073
00074 };
00075
00076 }
00077 }
00078
00079 #ifndef ITK_MANUAL_INSTANTIATION
00080 #include "itkRBFBackPropagationLearningFunction.txx"
00081 #endif
00082
00083 #endif
00084