20 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser ConstantOfShape op has input tensor" +
input_name +
21 " but its type is not yet registered");
26 std::cout <<
"\t.... ";
28 std::cout <<
"ConstantOfShape " <<
nodeproto.input(0) <<
" -> ";
30 std::cout <<
"Constant --> ";
31 std::cout <<
nodeproto.output(0) << std::endl;
34 std::unique_ptr<ROperator>
op;
39 std::vector<std::size_t> shape;
42 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Constant or ConstantOfShape and attribute size is larger than 1");
47 const onnx::TensorProto & t =
nodeproto.attribute(0).t();
51 for (
int j = 0;
j < t.dims_size();
j++) {
52 shape.push_back(t.dims(
j));
58 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser ConstantOfShape has invalid tensor size " + std::to_string(
length));
63 std::vector<int64_t> values(
length);
65 auto raw_data_ptr =
reinterpret_cast<int64_t *
>(
const_cast<char *
>(t.raw_data().c_str()));
71 std::vector<float> values(
length);
72 auto raw_data_ptr =
reinterpret_cast<float *
>(
const_cast<char *
>(t.raw_data().c_str()));
78 std::vector<bool> values(
length);
79 auto raw_data_ptr =
reinterpret_cast<bool *
>(
const_cast<char *
>(t.raw_data().c_str()));
88 " is not supported!\n");
96 std::vector<float> values(1);
102 auto values = std::vector<float>({
nodeproto.attribute(0).floats().begin(),
nodeproto.attribute(0).floats().
end()});
103 shape.push_back(values.size());
107 std::vector<int64_t> values(1);
114 shape.push_back(values.size());
117 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Constant op: not yet supporting attribute " +
attribute_name);
120 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser ConstantOfShape op: parsed invalid attribute " +
attribute_name);
128 std::vector<float> values(1);
132 throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Constant has no attribute");
141 std::cout <<
"\t ParseConstant: operator created\n";