12 std::string input_name = nodeproto.input(0);
16 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Split op has input tensor" + input_name +
17 " but its type is not yet registered");
20 std::string split_name;
21 if (nodeproto.input_size() > 1) {
22 split_name = nodeproto.input(1);
24 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Split op has input tensor" + split_name +
25 " but its type is not yet registered");
31 for (
int i = 0; i < nodeproto.attribute_size(); i++) {
32 std::string attribute_name = nodeproto.attribute(i).name();
33 if (attribute_name ==
"axis") {
34 axis = nodeproto.attribute(i).i();
36 else if (attribute_name ==
"num_outputs") {
37 num_outputs = nodeproto.attribute(i).i();
40 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Split operator: attribute" + attribute_name +
"is not yet supported");
44 int output_size = nodeproto.output_size();
45 std::vector<std::string> output_names(output_size);
46 for (
int i = 0; i < output_size; i++)
47 output_names[i] = nodeproto.output(i);
49 if (num_outputs > 0 && num_outputs != output_size)
50 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Split - invalid output size: " + std::to_string(output_size) +
" instead of " +
51 std::to_string(num_outputs));
53 std::unique_ptr<ROperator> op(
new ROperator_Split(input_name, split_name, axis, output_names));
56 for (
int i = 0; i < output_size; i++) {