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