Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
ParseBasicBinary.cxx
Go to the documentation of this file.
3#include "onnx_proto3.pb.h"
4
5namespace TMVA {
6namespace Experimental {
7namespace SOFIE {
8
9template <EBasicBinaryOperator Op>
10std::unique_ptr<ROperator> ParseBasicBinary(RModelParser_ONNX &parser, const onnx::NodeProto &nodeproto)
11{
13
14 for (int i = 0; i < 2; ++i) {
15 auto input_name = nodeproto.input(i);
17 // according to ONNX both inputs have same type
18 if (i == 0)
20 else
21 if (input_type != parser.GetTensorType(input_name)) {
22 throw
23 std::runtime_error("TMVA::SOFIE ONNX parser Binary op has input tensors of different types");
24 }
25 } else {
26 throw std::runtime_error("TMVA::SOFIE ONNX Parser Binary op has input tensor " + input_name +
27 " but its type is not yet registered");
28 }
29 }
30
31 std::unique_ptr<ROperator> op;
32 std::string output_name = nodeproto.output(0);
33
34 switch (input_type) {
37 break;
38 default:
39 throw std::runtime_error("TMVA::SOFIE - Unsupported - Binary Operator does not yet support input type " +
40 std::to_string(static_cast<int>(input_type)));
41 }
42
43 // Infer the output type
46 }
47
48 return op;
49};
50
51// Parse Add
55
56// Parse Sub
60
61// Parse Mul
65
66// Parse Div
70
71// Parse Pow
75
76} // namespace SOFIE
77} // namespace Experimental
78} // namespace TMVA
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
void RegisterTensorType(const std::string &, ETensorType)
ETensorType GetTensorType(const std::string &name)
std::function< std::unique_ptr< ROperator >(RModelParser_ONNX &, const onnx::NodeProto &)> ParserFuncSignature
ParserFuncSignature ParseDiv
ParserFuncSignature ParseSub
std::unique_ptr< ROperator > ParseBasicBinary(RModelParser_ONNX &parser, const onnx::NodeProto &nodeproto)
ParserFuncSignature ParseAdd
ParserFuncSignature ParseMul
ParserFuncSignature ParsePow
create variable transformations