20 #include <onnx/onnx_pb.h>
24 #include "graph_cache.hpp"
26 #include "ngraph/op/parameter.hpp"
27 #include "onnx_import/default_opset.hpp"
28 #include "operator_set.hpp"
29 #include "value_info.hpp"
38 Graph(
const ONNX_NAMESPACE::GraphProto& proto,
Model& model);
39 const std::vector<Node>& get_nodes()
const {
return m_nodes; }
40 const std::vector<ValueInfo>& get_inputs()
const {
return m_inputs; }
41 const std::vector<ValueInfo>& get_outputs()
const {
return m_outputs; }
42 OutputVector get_ng_outputs()
const;
43 const ParameterVector& get_ng_parameters()
const {
return m_parameters; }
44 bool is_node_in_cache(
const std::string& name)
const;
45 Output<ngraph::Node> get_ng_node_from_cache(
const std::string& name)
const;
46 const std::string& get_name()
const {
return m_graph_proto->name(); }
47 OutputVector make_ng_nodes(
const Node& onnx_node)
const;
51 Graph(
const ONNX_NAMESPACE::GraphProto& proto,
53 std::unique_ptr<GraphCache>&& cache);
55 void set_friendly_names(
const Node& onnx_node,
56 const OutputVector& ng_node_vector)
const;
58 void add_provenance_tag_to_initializer(
59 const Tensor& initializer, std::shared_ptr<default_opset::Constant> node)
const;
61 void add_provenance_tag_to_input(
const ValueInfo& input,
62 std::shared_ptr<ngraph::Node> node)
const;
64 void add_provenance_tags(
const Node& onnx_node,
65 const OutputVector& ng_node_vector)
const;
68 ParameterVector m_parameters;
71 const ONNX_NAMESPACE::GraphProto* m_graph_proto;
72 std::unique_ptr<GraphCache> m_cache;
73 std::vector<Node> m_nodes;
74 std::vector<ValueInfo> m_inputs;
75 std::vector<ValueInfo> m_outputs;
90 Subgraph(
const ONNX_NAMESPACE::GraphProto& proto,
92 const Graph& parent_graph);
95 inline std::ostream& operator<<(std::ostream& outs,
const Graph& graph)
97 return (outs <<
"<Graph: " << graph.get_name() <<
">");