/** * \brief An implementation of {@see AbstractInferencer} using SNPE to do inference * \author Yao Zou yaozou@kneron.us * \copyright 2019 Kneron Inc. All right reserved. */ #ifndef PIANO_DYNASTY_FLOATING_POINT_INCLUDE_SNPE_SNPEINFERENCER_H_ #define PIANO_DYNASTY_FLOATING_POINT_INCLUDE_SNPE_SNPEINFERENCER_H_ #include #include "AbstractInferencer.h" namespace zdl { namespace SNPE { class SNPE; } } // namespace zdl namespace zdl { namespace DlContainer { class IDlContainer; } } // namespace zdl namespace dynasty { namespace inferencer { namespace snpe { template class Inferencer : public AbstractInferencer { public: class Builder : public AbstractInferencer::Builder { friend class Inferencer; private: std::shared_ptr dl_container_; Builder() = default; public: Builder *WithONNXModel(std::string const &model_file); ~Builder() override; InferencerUniquePtr Build() override; }; private: std::unique_ptr snpe_; explicit Inferencer(zdl::DlContainer::IDlContainer *dlContainer); public: static Builder* GetBuilder(); std::unordered_map> Inference( std::unordered_map const &preprocess_input, bool only_output_layers) override; std::unordered_map> Inference( std::unordered_map> const &preprocess_input, bool only_output_layers = true) override; ~Inferencer() override = default; }; } } } #endif //PIANO_DYNASTY_FLOATING_POINT_INCLUDE_SNPE_SNPEINFERENCER_H_