ArmNN
 21.02
ITfParser.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include "armnn/Types.hpp"
8 #include "armnn/Tensor.hpp"
9 #include "armnn/INetwork.hpp"
10 
11 #include <map>
12 #include <memory>
13 #include <unordered_map>
14 #include <vector>
15 
16 namespace armnnTfParser
17 {
18 
20 
21 class ITfParser;
22 using ITfParserPtr = std::unique_ptr<ITfParser, void(*)(ITfParser* parser)>;
23 
24 /// Parses a directed acyclic graph from a tensorflow protobuf file.
25 class ITfParser
26 {
27 public:
28  static ITfParser* CreateRaw();
29  static ITfParserPtr Create();
30  static void Destroy(ITfParser* parser);
31 
32  /// Create the network from a protobuf text file on the disk.
34  const char* graphFile,
35  const std::map<std::string, armnn::TensorShape>& inputShapes,
36  const std::vector<std::string>& requestedOutputs);
37 
38  /// Create the network from a protobuf binary file on the disk.
40  const char* graphFile,
41  const std::map<std::string, armnn::TensorShape>& inputShapes,
42  const std::vector<std::string>& requestedOutputs);
43 
44  /// Create the network directly from protobuf text in a string. Useful for debugging/testing.
46  const char* protoText,
47  const std::map<std::string, armnn::TensorShape>& inputShapes,
48  const std::vector<std::string>& requestedOutputs);
49 
50  /// Retrieve binding info (layer id and tensor info) for the network input identified by the given layer name.
51  BindingPointInfo GetNetworkInputBindingInfo(const std::string& name) const;
52 
53  /// Retrieve binding info (layer id and tensor info) for the network output identified by the given layer name.
54  BindingPointInfo GetNetworkOutputBindingInfo(const std::string& name) const;
55 
56 private:
57  template <typename T>
58  friend class ParsedConstTfOperation;
60  friend class ParsedMulTfOperation;
61  friend class ParsedTfOperation;
65 
66  template <template<typename> class OperatorType, typename T>
67  friend struct MakeTfOperation;
68 
69 
70  ITfParser();
71  ~ITfParser();
72 
73  struct TfParserImpl;
74  std::unique_ptr<TfParserImpl> pTfParserImpl;
75 };
76 
77 }
static ITfParser * CreateRaw()
Definition: TfParser.cpp:43
friend class ParsedConstTfOperation
Definition: ITfParser.hpp:58
std::unique_ptr< ITfParser, void(*)(ITfParser *parser)> ITfParserPtr
Definition: ITfParser.hpp:22
armnn::INetworkPtr CreateNetworkFromTextFile(const char *graphFile, const std::map< std::string, armnn::TensorShape > &inputShapes, const std::vector< std::string > &requestedOutputs)
Create the network from a protobuf text file on the disk.
Definition: TfParser.cpp:58
armnn::BindingPointInfo BindingPointInfo
Definition: ITfParser.hpp:19
friend class ParsedIdentityTfOperation
Definition: ITfParser.hpp:64
friend class ParsedTfOperation
Definition: ITfParser.hpp:61
BindingPointInfo GetNetworkOutputBindingInfo(const std::string &name) const
Retrieve binding info (layer id and tensor info) for the network output identified by the given layer...
Definition: TfParser.cpp:84
BindingPointInfo GetNetworkInputBindingInfo(const std::string &name) const
Retrieve binding info (layer id and tensor info) for the network input identified by the given layer ...
Definition: TfParser.cpp:79
armnn::INetworkPtr CreateNetworkFromString(const char *protoText, const std::map< std::string, armnn::TensorShape > &inputShapes, const std::vector< std::string > &requestedOutputs)
Create the network directly from protobuf text in a string. Useful for debugging/testing.
Definition: TfParser.cpp:72
friend struct MakeTfOperation
Definition: ITfParser.hpp:67
friend class SingleLayerParsedTfOperation
Definition: ITfParser.hpp:62
friend class ParsedMatMulTfOperation
Definition: ITfParser.hpp:59
static ITfParserPtr Create()
Definition: TfParser.cpp:48
std::pair< armnn::LayerBindingId, armnn::TensorInfo > BindingPointInfo
Definition: Tensor.hpp:261
Parses a directed acyclic graph from a tensorflow protobuf file.
Definition: ITfParser.hpp:25
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
Definition: INetwork.hpp:173
friend class ParsedMulTfOperation
Definition: ITfParser.hpp:60
static void Destroy(ITfParser *parser)
Definition: TfParser.cpp:53
friend class DeferredSingleLayerParsedTfOperation
Definition: ITfParser.hpp:63
armnn::INetworkPtr CreateNetworkFromBinaryFile(const char *graphFile, const std::map< std::string, armnn::TensorShape > &inputShapes, const std::vector< std::string > &requestedOutputs)
Create the network from a protobuf binary file on the disk.
Definition: TfParser.cpp:65