2 #ifndef _NNDEPLOY_NET_UTIL_H_
3 #define _NNDEPLOY_NET_UTIL_H_
38 bool is_weight_ =
false;
47 std::vector<TensorWrapper *> &tensor_repository,
48 const std::string &tensor_name);
50 std::vector<TensorWrapper *> &tensor_repository,
51 const std::string &tensor_name);
53 std::vector<TensorWrapper *> &tensor_repository,
device::Tensor *tensor);
55 std::vector<TensorWrapper *> &tensor_repository);
57 std::vector<TensorWrapper *> &tensor_repository);
60 const std::string &name);
62 std::vector<OpWrapper *> &op_repository,
const std::string &name);
64 std::vector<OpWrapper *> &op_repository,
op::Op *node);
66 std::vector<OpWrapper *> &op_repository);
68 std::vector<OpWrapper *> &op_repository);
74 std::vector<OpWrapper *> &op_repository,
75 std::vector<device::Tensor *> &graph_inputs,
76 std::vector<device::Tensor *> &graph_outputs,
77 const std::string &name, std::ostream &oss);
79 std::vector<OpWrapper *>
checkUnuseOp(std::vector<OpWrapper *> &op_repository);
81 std::vector<OpWrapper *> &op_repository,
82 std::vector<TensorWrapper *> &tensor_repository);
85 std::vector<OpWrapper *> &topo_sort_node);
88 std::vector<OpWrapper *> &topo_sort_node);
92 std::vector<OpWrapper *> &topo_sort_node);
94 bool checkTensor(
const std::vector<device::Tensor *> &src_tensors,
95 const std::vector<device::Tensor *> &dst_tensors);
98 const std::vector<TensorWrapper *> &tensor_repository);
106 template <
typename T>
108 if (std::find(vec.begin(), vec.end(), val) == vec.end()) {
109 vec.emplace_back(val);
std::vector< OpWrapper * > successors_
std::vector< OpWrapper * > predecessors_
std::vector< OpWrapper * > producers_
std::vector< OpWrapper * > consumers_
#define NNDEPLOY_CC_API
api
base::Status setColor(std::vector< OpWrapper * > &op_repository, base::NodeColorType color)
base::Status dumpNet(std::vector< TensorWrapper * > &tensor_repository, std::vector< OpWrapper * > &op_repository, std::vector< device::Tensor * > &graph_inputs, std::vector< device::Tensor * > &graph_outputs, const std::string &name, std::ostream &oss)
std::vector< OpWrapper * > checkUnuseOp(std::vector< OpWrapper * > &op_repository)
std::vector< TensorWrapper * > findStartTensors(std::vector< TensorWrapper * > &tensor_repository)
void printNetInfo(const std::vector< OpWrapper * > &op_repository, const std::vector< TensorWrapper * > &tensor_repository)
std::vector< TensorWrapper * > findEndTensors(std::vector< TensorWrapper * > &tensor_repository)
std::vector< OpWrapper * > findEndOps(std::vector< OpWrapper * > &op_repository)
void insertUnique(std::vector< T > &vec, const T &val)
对vector插入不在vector中的元素,即类似集合的作用
OpWrapper * findOpWrapper(std::vector< OpWrapper * > &op_repository, const std::string &name)
TensorWrapper * findTensorWrapper(std::vector< TensorWrapper * > &tensor_repository, const std::string &tensor_name)
base::Status topoSortBFS(std::vector< OpWrapper * > &op_repository, std::vector< OpWrapper * > &topo_sort_node)
op::Op * getOp(std::vector< OpWrapper * > &op_repository, const std::string &name)
std::vector< TensorWrapper * > checkUnuseTensor(std::vector< OpWrapper * > &op_repository, std::vector< TensorWrapper * > &tensor_repository)
bool checkTensor(const std::vector< device::Tensor * > &src_tensors, const std::vector< device::Tensor * > &dst_tensors)
std::vector< OpWrapper * > findStartOps(std::vector< OpWrapper * > &op_repository)
base::Status topoSort(std::vector< OpWrapper * > &op_repository, base::TopoSortType topo_sort_type, std::vector< OpWrapper * > &topo_sort_node)
device::Tensor * getTensor(std::vector< TensorWrapper * > &tensor_repository, const std::string &tensor_name)
base::Status topoSortDFS(std::vector< OpWrapper * > &op_repository, std::vector< OpWrapper * > &topo_sort_node)