6namespace Experimental {
9template <EComparisionOperator Op>
14 for (
int i = 0; i < 2; ++i) {
15 auto input_name = nodeproto.
input(i);
23 std::runtime_error(
"TMVA::SOFIE ONNX parser Comparision op has input tensors of different types");
26 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Comparision op has input tensor " + input_name +
27 " but its type is not yet registered");
32 std::string output_name = nodeproto.
output(0);
34 std::unique_ptr<ROperator> op;
46 throw std::runtime_error(
"TMVA::SOFIE - Unsupported - Comparision Operator does not yet support input type " +
60 parser.
RegisterOperator(
"Equal", ParseComparision<EComparisionOperator::Eq>);
61 parser.
RegisterOperator(
"Less", ParseComparision<EComparisionOperator::Less>);
62 parser.
RegisterOperator(
"LessOrEqual", ParseComparision<EComparisionOperator::LessEq>);
63 parser.
RegisterOperator(
"Greater", ParseComparision<EComparisionOperator::Greater>);
64 parser.
RegisterOperator(
"GreaterOrEqual", ParseComparision<EComparisionOperator::GreaterEq>);
void RegisterOperator(const std::string &name, ParserFuncSignature func)
bool IsRegisteredTensorType(const std::string &)
void RegisterTensorType(const std::string &, ETensorType)
ETensorType GetTensorType(const std::string &name)
const std::string & input(int i) const
const std::string & output(int i) const
void RegisterComparisionParsers(RModelParser_ONNX &parser)
std::string ConvertTypeToString(ETensorType type)
std::unique_ptr< ROperator > ParseComparision(RModelParser_ONNX &parser, const onnx::NodeProto &nodeproto)
create variable transformations