2 #ifndef _NNDEPLOY_NET_NET_H_
3 #define _NNDEPLOY_NET_NET_H_
31 bool is_weight =
false);
40 std::initializer_list<std::string> inputs,
41 std::initializer_list<std::string> outputs);
43 ir::OpType op_type, std::vector<std::string> &inputs,
44 std::vector<std::string> &outputs);
48 std::shared_ptr<base::Param> param);
49 std::shared_ptr<base::Param>
getOpParam(
const std::string &op_name);
106 std::vector<base::DeviceType> device_types =
107 std::vector<base::DeviceType>());
149 bool is_dynamic_shape_ =
false;
155 bool tensor_pool_memory_is_external_ =
false;
158 bool net_opt_flag_ =
true;
virtual base::Status inferShape()
形状推理
TensorWrapper * createTensor(const std::string &name, bool is_weight=false)
base::Status copyToInputTensor(device::Tensor *tensor)
将输入tensor复制到输入tensor
std::set< OptPassType > disable_pass_
virtual int64_t getMemorySize()
获取推理所需的内存大小
std::vector< base::DeviceType > device_types_
device::Tensor * getWeight(const std::string &weight)
bool isWeight(const std::string &name)
op::Op * createOp(base::DeviceType device_type, const std::string &name, ir::OpType op_type, std::initializer_list< std::string > inputs, std::initializer_list< std::string > outputs)
base::Status setWorkers(int worker_num, std::vector< base::DeviceType > device_types=std::vector< base::DeviceType >())
设置推理并行数量
virtual base::Status reshape(base::ShapeMap &shape_map)
重新推理形状,通常在初始化之后、preRun前调用
virtual uint64_t getFlops()
得到op的flops
device::Tensor * getTensor(const std::string &name)
virtual base::Status inferDataFormat()
数据格式推理
base::Status setTensorPoolType(TensorPoolType tensor_pool_type)
op::Op * createOp(base::DeviceType device_type, const std::string &name, ir::OpType op_type, std::vector< std::string > &inputs, std::vector< std::string > &outputs)
base::Status setDynamicShape(bool is_dynamic_shape, base::ShapeMap &min_shape, base::ShapeMap &opt_shape, base::ShapeMap &max_shape)
ir::ModelDesc * model_desc_
virtual base::Status preRun()
base::Status setInterpret(ir::Interpret *interpret)
base::Status setModelDesc(ir::ModelDesc *model_desc)
std::shared_ptr< base::Param > getOpParam(const std::string &op_name)
TensorWrapper * addTensor(device::Tensor *tensor, bool is_external=true, bool is_weight=false)
virtual base::Status runtime()
base::Status addNet(Net *net, bool is_external)
base::Status setOpParam(const std::string &op_name, std::shared_ptr< base::Param > param)
virtual base::Status deinit()
virtual base::Status init()
初始化
virtual base::Status postRun()
base::Status setEnablePass(std::set< OptPassType >)
在图优化时仅启用这些pass,如果为空则启用全部pass
std::vector< OpWrapper * > op_repository_
base::Status setTensorPoolMemory(bool is_external)
std::vector< TensorWrapper * > tensor_repository_
virtual base::Status setMemory(device::Buffer *buffer)
设置推理所需的内存(推理内存由外部分配)
virtual base::Status construct()
base::Status setDisablePass(std::set< OptPassType >)
在图优化时禁用这些pass,如果为空则启用全部pass
virtual base::Status run()
std::set< OptPassType > enable_pass_
virtual base::Status inferDataType()
类型推理
base::Status enableOpt(bool flag)
设置开启图优化的开关 flag: true 启用图优化 false:关闭图优化
device::Tensor * getOutputTensorAfterRun(const std::string &name, base::DeviceType device_type, bool is_copy, base::DataFormat data_format)
获取推理后的输出tensor
base::Status dump(std::ostream &oss)
#define NNDEPLOY_CC_API
api
std::map< std::string, std::vector< int > > ShapeMap
@ kTensorPool1DSharedObjectTypeGreedyBySizeImprove
Net * createNet(ir::ModelDesc *model_desc, base::DeviceType device_type, base::PrecisionType precision_type)