TransposeReduction: skip the case when 2nd input for Squeeze is not provided
This commit is contained in:
parent
176686318f
commit
54b4061282
@ -26,9 +26,15 @@ std::shared_ptr<opset6::Constant> get_reduced_order_constant(const std::shared_p
|
||||
auto order = order_const->cast_vector<int64_t>();
|
||||
|
||||
auto axes = axes_const->cast_vector<int64_t>();
|
||||
std::sort(axes.rbegin(), axes.rend());
|
||||
for (const auto& i : axes)
|
||||
order.erase(order.begin() + i);
|
||||
if (!axes.empty()) {
|
||||
std::sort(axes.rbegin(), axes.rend());
|
||||
for (const auto& i : axes)
|
||||
order.erase(order.begin() + i);
|
||||
} else {
|
||||
// if 2nd input for Squeeze op is not provided, we should remove all 1 dims
|
||||
// this case will be supported in new TransposeSinkingGeneral transformation.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const auto& updated_order_size = static_cast<int64_t>(order.size());
|
||||
|
||||
@ -181,6 +187,10 @@ ov::pass::TransposeReduction::TransposeReduction() {
|
||||
updated_order = get_reduced_order_constant(reduction_axes, transpose_order);
|
||||
new_ops.push_back(updated_order);
|
||||
}
|
||||
|
||||
if (!updated_order) {
|
||||
return false;
|
||||
}
|
||||
auto new_transpose = register_new_node<opset6::Transpose>(new_reduce, updated_order);
|
||||
new_ops.push_back(new_transpose);
|
||||
new_transpose->set_friendly_name(reduction->get_friendly_name());
|
||||
|
Loading…
Reference in New Issue
Block a user