AutoencoderModelFactory.h 1.94 KiB
#ifndef AutoencoderModelFactory_h
#define AutoencoderModelFactory_h
#include <shark/Models/TiedAutoencoder.h>
#include <shark/Models/Autoencoder.h>
#include "itkObjectFactoryBase.h"
#include "itkImageIOBase.h"
namespace otb
template <class TInputValue, class TTargetValue, class AutoencoderType>
class ITK_EXPORT AutoencoderModelFactoryBase : public itk::ObjectFactoryBase
public:
  /** Standard class typedefs. */
  typedef AutoencoderModelFactoryBase   Self;
  typedef itk::ObjectFactoryBase        Superclass;
  typedef itk::SmartPointer<Self>       Pointer;
  typedef itk::SmartPointer<const Self> ConstPointer;
  /** Class methods used to interface with the registered factories. */
  const char* GetITKSourceVersion(void) const ITK_OVERRIDE;
  const char* GetDescription(void) const ITK_OVERRIDE;
  /** Method for class instantiation. */
  itkFactorylessNewMacro(Self);
  /** Run-time type information (and related methods). */
  itkTypeMacro(AutoencoderModelFactoryBase, itk::ObjectFactoryBase);
  /** Register one factory of this type  */
  static void RegisterOneFactory(void)
    Pointer AEFactory = AutoencoderModelFactoryBase::New();
    itk::ObjectFactoryBase::RegisterFactory(AEFactory);
protected:
  AutoencoderModelFactoryBase();
  ~AutoencoderModelFactoryBase() ITK_OVERRIDE;
private:
  AutoencoderModelFactoryBase(const Self &); //purposely not implemented
  void operator =(const Self&); //purposely not implemented
template <class TInputValue, class TTargetValue>
using AutoencoderModelFactory = AutoencoderModelFactoryBase<TInputValue, TTargetValue, shark::Autoencoder< shark::TanhNeuron, shark::LinearNeuron>>  ;
template <class TInputValue, class TTargetValue>
using TiedAutoencoderModelFactory = AutoencoderModelFactoryBase<TInputValue, TTargetValue, shark::TiedAutoencoder< shark::TanhNeuron, shark::LinearNeuron>>  ;
} //namespace otb
#ifndef OTB_MANUAL_INSTANTIATION
#include "AutoencoderModelFactory.txx"
#endif
#endif
71