33 assert(inputs.size() == 1);
34 auto input = inputs[0];
36 const int num_axes = input->getShape().rank();
37 std::vector<std::size_t> axis_order(num_axes);
40 if (perm_attr ==
nullptr)
43 std::iota(axis_order.rbegin(), axis_order.rend(), 0);
47 const auto perm = getAttributeValue<std::vector<std::int64_t>>(*perm_attr);
48 assert(
static_cast<int>(perm.size()) == num_axes);
49 std::copy(perm.cbegin(), perm.cend(), axis_order.begin());
52 auto result = createOp<mir::ops::TransposeOp>(graph, input, axis_order)->getOutput(0);
void setNodeOutputs(const onnx::NodeProto &onnx_node, const std::vector< mir::Operation::Output * > &outputs)
std::vector< mir::Operation::Output * > getNodeInputs(const onnx::NodeProto &onnx_node) const
mir::Graph * getGraph() const