.. _program_listing_file_src_models_model_factory.h: Program Listing for File model_factory.h ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/models/model_factory.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "marian.h" #include "layers/factory.h" #include "models/encoder_decoder.h" #include "models/encoder_classifier.h" #include "models/encoder_pooler.h" namespace marian { namespace models { class EncoderFactory : public Factory { using Factory::Factory; public: virtual Ptr construct(Ptr graph); }; typedef Accumulator encoder; class DecoderFactory : public Factory { using Factory::Factory; public: virtual Ptr construct(Ptr graph); }; typedef Accumulator decoder; class ClassifierFactory : public Factory { using Factory::Factory; public: virtual Ptr construct(Ptr graph); }; typedef Accumulator classifier; class PoolerFactory : public Factory { using Factory::Factory; public: virtual Ptr construct(Ptr graph); }; typedef Accumulator pooler; class EncoderDecoderFactory : public Factory { using Factory::Factory; private: std::vector encoders_; std::vector decoders_; public: Accumulator push_back(encoder enc) { encoders_.push_back(enc); return Accumulator(*this); } Accumulator push_back(decoder dec) { decoders_.push_back(dec); return Accumulator(*this); } virtual Ptr construct(Ptr graph); }; typedef Accumulator encoder_decoder; class EncoderClassifierFactory : public Factory { using Factory::Factory; private: std::vector encoders_; std::vector classifiers_; public: Accumulator push_back(encoder enc) { encoders_.push_back(enc); return Accumulator(*this); } Accumulator push_back(classifier cls) { classifiers_.push_back(cls); return Accumulator(*this); } virtual Ptr construct(Ptr graph); }; typedef Accumulator encoder_classifier; class EncoderPoolerFactory : public Factory { using Factory::Factory; private: std::vector encoders_; std::vector poolers_; public: Accumulator push_back(encoder enc) { encoders_.push_back(enc); return Accumulator(*this); } Accumulator push_back(pooler cls) { poolers_.push_back(cls); return Accumulator(*this); } virtual Ptr construct(Ptr graph); }; typedef Accumulator encoder_pooler; Ptr createBaseModelByType(std::string type, usage, Ptr options); Ptr createModelFromOptions(Ptr options, usage); Ptr createCriterionFunctionFromOptions(Ptr options, usage); } // namespace models } // namespace marian