⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itkmultilayerneuralnetworkbase.h

📁 DTMK软件开发包,此为开源软件,是一款很好的医学图像开发资源.
💻 H
字号:
/*
Program:   Insight Segmentation & Registration Toolkit
Module:    $RCSfile: itkMultilayerNeuralNetworkBase.h,v $
Language:  C++
Date:      $Date: 2007-08-30 18:23:05 $
Version:   $Revision: 1.9 $

Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.

This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.  See the above copyright notices for more information.

=========================================================================*/
#ifndef __MultiLayerNeuralNetworkBase_h
#define __MultiLayerNeuralNetworkBase_h

#include "itkNeuralNetworkObject.h"
#include "itkLayerBase.h"

namespace itk
{
  namespace Statistics
    {

    template<class TMeasurementVector, class TTargetVector,class TLearningLayer=LayerBase<TMeasurementVector, TTargetVector> >
      class MultilayerNeuralNetworkBase : public NeuralNetworkObject<TMeasurementVector, TTargetVector>
        {
      public:

        typedef MultilayerNeuralNetworkBase Self;
        typedef NeuralNetworkObject<TMeasurementVector, TTargetVector> Superclass;
        typedef SmartPointer<Self> Pointer;
        typedef SmartPointer<const Self> ConstPointer;
        itkTypeMacro(MultilayerNeuralNetworkBase, NeuralNetworkObject);

        /** New macro for creation of through a Smart Pointer. */
        itkNewMacro( Self );

        typedef typename Superclass::ValueType ValueType;
        typedef typename Superclass::MeasurementVectorType MeasurementVectorType;
        typedef typename Superclass::TargetVectorType TargetVectorType;
        typedef typename Superclass::NetworkOutputType NetworkOutputType;

        typedef typename Superclass::LayerInterfaceType LayerInterfaceType;
        typedef TLearningLayer LearningLayerType;
        typedef LearningFunctionBase<typename TLearningLayer::LayerInterfaceType, TTargetVector> LearningFunctionInterfaceType;

        typedef std::vector<typename LayerInterfaceType::WeightSetInterfaceType::Pointer> WeightVectorType;
        typedef std::vector<typename LayerInterfaceType::Pointer> LayerVectorType;

        typedef TransferFunctionBase<ValueType> TransferFunctionInterfaceType;
        typedef InputFunctionBase<ValueType*, ValueType> InputFunctionInterfaceType;

//#define __USE_OLD_INTERFACE  Comment out to ensure that new interface works
#ifdef __USE_OLD_INTERFACE
        itkSetMacro(NumOfLayers, int);
        itkGetConstReferenceMacro(NumOfLayers, int);

        itkSetMacro(NumOfWeightSets, int);
        itkGetConstReferenceMacro(NumOfWeightSets, int);
#else
        int GetNumOfLayers(void) const
          {
          return m_Layers.size();
          }
        int GetNumOfWeightSets(void) const
          {
          return m_Weights.size();
          }

#endif

        void AddLayer(LayerInterfaceType *);
        LayerInterfaceType * GetLayer(int layer_id);
        const LayerInterfaceType * GetLayer(int layer_id) const;

        void AddWeightSet(typename LayerInterfaceType::WeightSetInterfaceType*);
        typename LayerInterfaceType::WeightSetInterfaceType* GetWeightSet(unsigned int id)
        {
        return m_Weights[id].GetPointer();
        }
#ifdef __USE_OLD_INTERFACE
        const typename LayerInterfaceType::WeightSetInterfaceType* GetWeightSet(unsigned int id) const;
#endif

        void SetLearningFunction(LearningFunctionInterfaceType* f);

        virtual NetworkOutputType GenerateOutput(TMeasurementVector samplevector);

        virtual void BackwardPropagate(NetworkOutputType errors);
        virtual void UpdateWeights(ValueType);

        void SetLearningRule(LearningFunctionInterfaceType*);

        void SetLearningRate(ValueType learningrate);

        void InitializeWeights();

      protected:
        MultilayerNeuralNetworkBase();
        ~MultilayerNeuralNetworkBase();

        LayerVectorType                 m_Layers;
        WeightVectorType                m_Weights;
        typename LearningFunctionInterfaceType::Pointer   m_LearningFunction;
        ValueType                       m_LearningRate;
//#define __USE_OLD_INTERFACE  Comment out to ensure that new interface works
#ifdef __USE_OLD_INTERFACE
        //These are completely redundant variables that can be more reliably queried from
        // m_Layers->size() and m_Weights->size();
        int                             m_NumOfLayers;
        int                             m_NumOfWeightSets;
#endif
        /** Method to print the object. */
        virtual void PrintSelf( std::ostream& os, Indent indent ) const;
        };

    } // end namespace Statistics
} // end namespace itk

#ifndef ITK_MANUAL_INSTANTIATION
#include "itkMultilayerNeuralNetworkBase.txx"
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -