diff --git a/src/frontends/onnx/frontend/src/op/group_normalization.cpp b/src/frontends/onnx/frontend/src/op/group_normalization.cpp index d0f32a89ae4..b0dc8f786d8 100644 --- a/src/frontends/onnx/frontend/src/op/group_normalization.cpp +++ b/src/frontends/onnx/frontend/src/op/group_normalization.cpp @@ -12,30 +12,34 @@ namespace onnx_import { namespace op { namespace set_1 { OutputVector group_normalization(const Node& node) { - const auto data = node.get_ng_inputs().at(0); // Shape [N, C, ...] - auto scale = node.get_ng_inputs().at(1); // Shape [num_groups] - auto bias = node.get_ng_inputs().at(2); // Shape [num_groups] + const auto inputs = node.get_ng_inputs(); + OPENVINO_ASSERT(inputs.size() == 3); - auto eps = node.get_attribute_value("epsilon", 1e-05f); - auto num_groups = node.get_attribute_value("num_groups"); + const auto& data = inputs[0]; // Shape [N, C, ...] + const auto& scale = inputs[1]; // Shape [num_groups] + const auto& bias = inputs[2]; // Shape [num_groups] - auto zero = default_opset::Constant::create(element::i64, Shape{1}, {0}); - auto one = default_opset::Constant::create(element::i64, Shape{1}, {1}); - auto c_dim = std::make_shared(std::make_shared(data), one, zero); - auto g_dim = default_opset::Constant::create(element::i64, Shape{1}, {num_groups}); + const auto eps = node.get_attribute_value("epsilon", 1e-05f); + const auto num_groups = node.get_attribute_value("num_groups"); - auto c_g_div = std::make_shared(c_dim, g_dim); + const auto zero = default_opset::Constant::create(element::i64, Shape{1}, {0}); + const auto one = default_opset::Constant::create(element::i64, Shape{1}, {1}); + const auto c_dim = + std::make_shared(std::make_shared(data), one, zero); + const auto g_dim = default_opset::Constant::create(element::i64, Shape{1}, {num_groups}); + + const auto c_g_div = std::make_shared(c_dim, g_dim); // Adjust scale and bias shape, [G] -> [G, C/G] -> [C] - scale = std::make_shared(scale, one); - auto broadcast_scale = - std::make_shared(scale, c_g_div, ov::op::BroadcastType::BIDIRECTIONAL); - auto c_scale = std::make_shared(broadcast_scale, c_dim, false); + const auto scale_unsq = std::make_shared(scale, one); + const auto broadcast_scale = + std::make_shared(scale_unsq, c_g_div, ov::op::BroadcastType::BIDIRECTIONAL); + const auto c_scale = std::make_shared(broadcast_scale, c_dim, false); - bias = std::make_shared(bias, one); - auto broadcast_bias = - std::make_shared(bias, c_g_div, ov::op::BroadcastType::BIDIRECTIONAL); - auto c_bias = std::make_shared(broadcast_bias, c_dim, false); + const auto bias_unsq = std::make_shared(bias, one); + const auto broadcast_bias = + std::make_shared(bias_unsq, c_g_div, ov::op::BroadcastType::BIDIRECTIONAL); + const auto c_bias = std::make_shared(broadcast_bias, c_dim, false); return {std::make_shared(data, c_scale, c_bias, num_groups, eps)}; }