已合并
【fix】针对各轴repeat均为1的brodcast算子获取broadcast轴失败的场景进行兼容处理 #2364
Nexen_NiSong创建于 19 天前
【fix】针对各轴repeat均为1的brodcast算子获取broadcast轴失败的场景进行兼容处理 #2364
已合并
共 1 个文件变更+8-0
| @@ -348,6 +348,14 @@ Status GetBroAxisFromNode(const NodePtr &bro_node, int64_t &bro_axis) { | |||
| 348 | GE_ASSERT_TRUE(bro_repeats.size() == bro_attr_axis.size()); | 348 | GE_ASSERT_TRUE(bro_repeats.size() == bro_attr_axis.size()); |
| 349 | GE_ASSERT_TRUE(bro_strides.size() == bro_attr_axis.size()); | 349 | GE_ASSERT_TRUE(bro_strides.size() == bro_attr_axis.size()); |
| 350 | GE_ASSERT_TRUE(pre_bro_repeats.size() == pre_bro_axis.size()); | 350 | GE_ASSERT_TRUE(pre_bro_repeats.size() == pre_bro_axis.size()); |
| 351 | + const auto all_repeats_one = | ||
| 352 | + std::all_of(bro_repeats.begin(), bro_repeats.end(), [](const Expression &repeat) { return IsEqOne(repeat); }); | ||
| 353 | + if (all_repeats_one) { | ||
| 354 | + bro_axis = -1; | ||
W | |||
| 355 | + GELOGI("No-op broadcast node %s(%s) with all-one output repeats, treat as no broadcast axis.", | ||
| 356 | + bro_node->GetName().c_str(), bro_node->GetType().c_str()); | ||
| 357 | + return SUCCESS; | ||
| 358 | + } | ||
| 351 | for (size_t index = 0U; index < bro_attr_axis.size(); index++) { | 359 | for (size_t index = 0U; index < bro_attr_axis.size(); index++) { |
| 352 | if (IsEqOne(bro_repeats[index])) { | 360 | if (IsEqOne(bro_repeats[index])) { |
| 353 | continue; | 361 | continue; |
333行已经初始化了,这里是不是可以省略?