6#ifndef DEEPLIMA_EIGEN_WRP_BIRNN_INFERENCE_BASE_H
7#define DEEPLIMA_EIGEN_WRP_BIRNN_INFERENCE_BASE_H
9#include <eigen3/Eigen/Dense>
35 virtual void load(
const std::string& fn) = 0;
69 assert(
m_wb.size() > 0);
70 assert(
m_ops.size() > 0);
73 size_t new_worker_idx =
m_wb[0].size();
74 for (
size_t i = 0; i <
m_ops.size(); i++)
76 assert(
m_wb[i].size() == new_worker_idx);
78 m_wb[i].push_back(
m_ops[i]->create_workbench(input_len,
m_params[i], precomputed_input));
81 return new_worker_idx;
85 const Eigen::MatrixXf& inputs,
86 Eigen::MatrixXf& outputs,
92 const Eigen::MatrixXf& inputs,
98 const std::vector<std::string>& outputs_names
102 std::vector<std::shared_ptr<Op_Base>>
m_ops;
103 std::vector<std::shared_ptr<param_base_t>>
m_params;
105 std::vector<std::vector<std::shared_ptr<Op_Base::workbench_t>>>
m_wb;
116 std::vector<params_bilstm_spec_t>
m_lstm;
123 std::vector<params_linear_t<Eigen::MatrixXf, Eigen::VectorXf>>
m_linear;
std::map< std::string, size_t > m_multi_bilstm_idx
std::vector< std::vector< std::shared_ptr< Op_Base::workbench_t > > > m_wb
virtual void convert_from_torch(const std::string &fn)=0
std::vector< std::shared_ptr< Op_Base > > m_ops
uint_dicts_holder_t m_input_uint_dicts
EmbdStrFloatHolder str_dicts_holder_t
std::vector< std::string > m_output_str_dicts_names
virtual void convert_dicts_and_embeddings(const nets::BiRnnClassifierImpl &src)
virtual void predict(size_t worker_id, const Eigen::MatrixXf &inputs, int64_t input_begin, int64_t input_end, int64_t output_begin, int64_t output_end, std::shared_ptr< StdMatrix< uint8_t > > &output, const std::vector< std::string > &outputs_names)=0
EmbdUInt64FloatHolder uint_dicts_holder_t
params_bilstm_t< Eigen::MatrixXf, Eigen::VectorXf > params_bilstm_spec_t
const std::vector< std::vector< std::string > > & get_output_str_dicts() const
const uint_dicts_holder_t & get_input_uint_dicts() const
std::map< std::string, size_t > m_linear_idx
virtual size_t init_new_worker(size_t input_len, bool precomputed_input=false)
std::vector< std::string > m_input_uint_dicts_names
const std::vector< std::string > & get_output_str_dicts_names() const
const std::vector< std::string > & get_input_uint_dicts_names() const
virtual ~BiRnnInferenceBase()=default
std::vector< std::string > m_input_str_dicts_names
std::vector< std::shared_ptr< params_multilayer_bilstm_spec_t > > m_multi_bilstm
const str_dicts_holder_t & get_input_str_dicts() const
std::map< std::string, size_t > m_lstm_idx
virtual void load(const std::string &fn)=0
std::vector< params_linear_t< Eigen::MatrixXf, Eigen::VectorXf > > m_linear
str_dicts_holder_t m_input_str_dicts
std::vector< std::vector< std::string > > m_output_str_dicts
const std::vector< std::string > & get_input_str_dicts_names() const
std::vector< params_bilstm_spec_t > m_lstm
std::vector< std::shared_ptr< param_base_t > > m_params
virtual void precompute_inputs(const Eigen::MatrixXf &inputs, Eigen::MatrixXf &outputs, int64_t input_size)=0
params_multilayer_bilstm_t< Eigen::MatrixXf, Eigen::VectorXf > params_multilayer_bilstm_spec_t