remove redundant header (#5363)
This commit is contained in:
parent
0a8c3ef5a9
commit
9a569805c2
@ -1,104 +0,0 @@
|
|||||||
// Copyright (C) 2018-2021 Intel Corporation
|
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
//
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <map>
|
|
||||||
#include <set>
|
|
||||||
#include <string>
|
|
||||||
#include <unordered_map>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include "onnx_editor/editor_types.hpp"
|
|
||||||
|
|
||||||
namespace ONNX_NAMESPACE
|
|
||||||
{
|
|
||||||
class GraphProto;
|
|
||||||
class NodeProto;
|
|
||||||
class ValueInfoProto;
|
|
||||||
} // namespace ONNX_NAMESPACE
|
|
||||||
|
|
||||||
namespace ngraph
|
|
||||||
{
|
|
||||||
namespace onnx_editor
|
|
||||||
{
|
|
||||||
/// \brief Subgraph extraction helper structure
|
|
||||||
struct SubgraphExtractor
|
|
||||||
{
|
|
||||||
SubgraphExtractor(ONNX_NAMESPACE::GraphProto& graph);
|
|
||||||
|
|
||||||
/// \brief Adds new inputs to the graph and connects them to the nodes indicated by
|
|
||||||
/// the provided input edges.
|
|
||||||
void add_new_inputs(const std::vector<InputEdge>& new_inputs);
|
|
||||||
|
|
||||||
/// \brief Adds new outputs to the graph with the same name as the nodes pointed to
|
|
||||||
/// by the input edges "new_outputs".
|
|
||||||
void add_new_outputs(const std::vector<OutputEdge>& new_outputs);
|
|
||||||
|
|
||||||
/// \brief Extracts the final subgraph by traversing the original model bottom-up
|
|
||||||
/// starting at each of the provided output edges. The extracted subgraph
|
|
||||||
/// contains all previously added inputs and potentially a subset of original
|
|
||||||
/// model's inputs that contribute to the value calculated in the output tensors.
|
|
||||||
/// In the end the underlying GraphProto is modified and obsolete elements
|
|
||||||
/// are discarded after this method call has finished.
|
|
||||||
///
|
|
||||||
/// \param subgraph_outputs A list of expected outputs of the extracted subgraph.
|
|
||||||
void extract_subgraph(std::vector<OutputEdge> subgraph_outputs);
|
|
||||||
|
|
||||||
/// \brief Represents a subgraph of an ONNX model by holding a subset of nodes, inputs,
|
|
||||||
/// outputs and initializers of the original graph. Objects of this struct can be
|
|
||||||
/// merged into other instances using the += operator to build a subgraph from
|
|
||||||
/// smaller clusters.
|
|
||||||
struct SubgraphComponents
|
|
||||||
{
|
|
||||||
SubgraphComponents() = default;
|
|
||||||
SubgraphComponents(const SubgraphComponents&) = delete;
|
|
||||||
SubgraphComponents(SubgraphComponents&&) = default;
|
|
||||||
SubgraphComponents& operator=(const SubgraphComponents&) = delete;
|
|
||||||
SubgraphComponents& operator=(SubgraphComponents&&) = default;
|
|
||||||
|
|
||||||
std::set<int> nodes;
|
|
||||||
std::set<std::string> inputs;
|
|
||||||
std::set<std::string> initializers;
|
|
||||||
std::set<std::string> outputs;
|
|
||||||
|
|
||||||
SubgraphComponents& operator+=(SubgraphComponents&& other)
|
|
||||||
{
|
|
||||||
nodes.insert(other.nodes.begin(), other.nodes.end());
|
|
||||||
inputs.insert(other.inputs.begin(), other.inputs.end());
|
|
||||||
initializers.insert(other.initializers.begin(), other.initializers.end());
|
|
||||||
outputs.insert(other.outputs.begin(), other.outputs.end());
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private:
|
|
||||||
ONNX_NAMESPACE::GraphProto& m_onnx_graph;
|
|
||||||
|
|
||||||
// Graph traversal helper: node index -> node inputs (one-to-many)
|
|
||||||
std::unordered_multimap<int, std::string> m_node_inputs;
|
|
||||||
// Number of consumers of all tensors in the graph
|
|
||||||
std::map<std::string, int> m_tensor_consumers;
|
|
||||||
|
|
||||||
/// \brief Replaces the old input edge with a new one in the helper struct.
|
|
||||||
/// This is used by the output contributors discovery.
|
|
||||||
void replace_input_edge(const InputEdge& old_edge, const InputEdge& new_edge);
|
|
||||||
|
|
||||||
/// \brief Returns a list of edges of each outputs of the graph "m_onnx_graph"
|
|
||||||
std::vector<OutputEdge> all_output_edges() const;
|
|
||||||
|
|
||||||
/// \brief Traverses the graph bottom-up and collects all nodes, inputs and initializers
|
|
||||||
/// that contribute to an output designated by the provided output edge.
|
|
||||||
/// A sum of such SubgraphComponents objects forms a target extracted subgraph.
|
|
||||||
SubgraphComponents
|
|
||||||
discover_output_contributors(const OutputEdge& output_edge,
|
|
||||||
const SubgraphComponents& already_collected) const;
|
|
||||||
|
|
||||||
/// \brief Modifies the underlying GraphProto object and discards all obsolete elements.
|
|
||||||
///
|
|
||||||
/// \param subgraph An object describing the subgraph to be extracted (elems to be kept)
|
|
||||||
void extract_subgraph_from_onnx_model(const SubgraphComponents& subgraph);
|
|
||||||
};
|
|
||||||
} // namespace onnx_editor
|
|
||||||
} // namespace ngraph
|
|
@ -7,7 +7,7 @@
|
|||||||
#include <stack>
|
#include <stack>
|
||||||
|
|
||||||
#include "ngraph/check.hpp"
|
#include "ngraph/check.hpp"
|
||||||
#include "onnx_editor/detail/subgraph_extraction.hpp"
|
#include "subgraph_extraction.hpp"
|
||||||
|
|
||||||
using namespace ngraph::onnx_editor;
|
using namespace ngraph::onnx_editor;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user