ROOT
master
Reference Guide
Loading...
Searching...
No Matches
ParseExpand.cxx
Go to the documentation of this file.
1
#include "
TMVA/RModelParser_ONNX.hxx
"
2
#include "
TMVA/ROperator_Expand.hxx
"
3
#include "onnx_proto3.pb.h"
4
5
namespace
TMVA
{
6
namespace
Experimental {
7
namespace
SOFIE {
8
9
ParserFuncSignature
ParseExpand
= [](
RModelParser_ONNX
&parser,
const
onnx::NodeProto &
nodeproto
) {
10
std::unique_ptr<ROperator>
op
;
11
12
ETensorType
input_type
=
ETensorType::UNDEFINED
;
13
const
std::string
input_name
=
nodeproto
.input(0);
14
if
(parser.
IsRegisteredTensorType
(
input_name
)) {
15
input_type
= parser.
GetTensorType
(
input_name
);
16
}
else
{
17
throw
std::runtime_error(
18
"TMVA::SOFIE ONNX Parser Expand op has input tensor "
+
input_name
+
19
" but its type is not yet registered"
);
20
}
21
22
const
std::string shape_name =
nodeproto
.input(1);
23
if
(parser.
IsRegisteredTensorType
(shape_name)) {
24
if
(parser.
GetTensorType
(shape_name) !=
ETensorType::INT64
) {
25
throw
26
std::runtime_error(
"TMVA::SOFIE - ONNX Parser Expand Op shape type not supported"
);
27
}
28
}
else
{
29
throw
std::runtime_error(
30
"TMVA::SOFIE ONNX Parser Sign op has input tensor "
+
input_name
+
31
" but its type is not yet registered"
);
32
}
33
34
const
std::string
output_name
=
nodeproto
.output(0);
35
switch
(
input_type
) {
36
case
ETensorType::FLOAT
:
37
op
.reset(
new
ROperator_Expand<float>
(
input_name
, shape_name,
output_name
));
38
break
;
39
case
ETensorType::INT64
:
40
op
.reset(
new
ROperator_Expand<int64_t>
(
input_name
, shape_name,
output_name
));
41
break
;
42
case
ETensorType::BOOL
:
43
op
.reset(
new
ROperator_Expand<uint8_t>
(
input_name
, shape_name,
output_name
));
44
break
;
45
default
:
46
throw
std::runtime_error(
"TMVA::SOFIE - Unsupported - Expand Operator does "
47
"not support input type "
+
48
std::to_string(
static_cast<
int
>
(
input_type
)));
49
}
50
if
(!parser.
IsRegisteredTensorType
(
output_name
)) {
51
parser.
RegisterTensorType
(
output_name
,
input_type
);
52
}
53
return
op
;
54
};
55
56
57
}
// namespace SOFIE
58
}
// namespace Experimental
59
}
// namespace TMVA
RModelParser_ONNX.hxx
ROperator_Expand.hxx
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:360
ROOT::Detail::TRangeCast
Definition
TCollection.h:313
TMVA::Experimental::SOFIE::RModelParser_ONNX
Definition
RModelParser_ONNX.hxx:30
TMVA::Experimental::SOFIE::RModelParser_ONNX::IsRegisteredTensorType
bool IsRegisteredTensorType(const std::string &)
Definition
RModelParser_ONNX.cxx:376
TMVA::Experimental::SOFIE::RModelParser_ONNX::RegisterTensorType
void RegisterTensorType(const std::string &, ETensorType)
Definition
RModelParser_ONNX.cxx:371
TMVA::Experimental::SOFIE::RModelParser_ONNX::GetTensorType
ETensorType GetTensorType(const std::string &name)
Definition
RModelParser_ONNX.cxx:381
TMVA::Experimental::SOFIE::ETensorType
ETensorType
Definition
SOFIE_common.hxx:28
TMVA::Experimental::SOFIE::ETensorType::UNDEFINED
@ UNDEFINED
TMVA::Experimental::SOFIE::ETensorType::INT64
@ INT64
TMVA::Experimental::SOFIE::ETensorType::BOOL
@ BOOL
TMVA::Experimental::SOFIE::ETensorType::FLOAT
@ FLOAT
TMVA::Experimental::SOFIE::ParserFuncSignature
std::function< std::unique_ptr< ROperator >(RModelParser_ONNX &, const onnx::NodeProto &)> ParserFuncSignature
Definition
RModelParser_ONNX.hxx:25
TMVA::Experimental::SOFIE::ParseExpand
ParserFuncSignature ParseExpand
Definition
ParseExpand.cxx:9
TMVA
create variable transformations
Definition
GeneticMinimizer.h:22
tmva
sofie_parsers
src
ParseExpand.cxx
ROOTmaster - Reference Guide Generated on Mon Apr 13 2026 04:28:00 (GVA Time) using Doxygen 1.10.0