已合并
修复avg_pool在divisorOverride为负数时,计算逻辑错误问题 #6931
klein8793创建于 7月2日
修复avg_pool在divisorOverride为负数时,计算逻辑错误问题 #6931
已合并
共 2 个文件变更+2-2
| @@ -138,7 +138,7 @@ __aicore__ inline void AvgPoolBigKernel<T>::CalcKernelSize(int64_t curIdx, int64 | |||
| 138 | curOriginIndex_ = curOriginH_ * tilingData_->wInDim + curOriginW_; | 138 | curOriginIndex_ = curOriginH_ * tilingData_->wInDim + curOriginW_; |
| 139 | curInOffset = curNc * inHW_ + curOriginIndex_; | 139 | curInOffset = curNc * inHW_ + curOriginIndex_; |
| 140 | 140 | ||
| 141 | if (tilingData_->divisorOverride > 0) { | 141 | if (tilingData_->divisorOverride) { |
C | |||
| 142 | mulsFactor_ = 1.0f / static_cast<float>(tilingData_->divisorOverride); | 142 | mulsFactor_ = 1.0f / static_cast<float>(tilingData_->divisorOverride); |
| 143 | } else if (tilingData_->countIncludePad == 0) { | 143 | } else if (tilingData_->countIncludePad == 0) { |
| 144 | mulsFactor_ = curkH * curkW == 0 ? 0 : 1.0f / static_cast<float>(curkH * curkW); | 144 | mulsFactor_ = curkH * curkW == 0 ? 0 : 1.0f / static_cast<float>(curkH * curkW); |
| @@ -158,7 +158,7 @@ __aicore__ inline void AvgPoolNhwcBigKernel<T>::CalcKernelSize(int64_t curIdx, i | |||
| 158 | curOriginIndex_ = (curOriginH_ * tilingData_->wInDim + curOriginW_) * tilingData_->channel; | 158 | curOriginIndex_ = (curOriginH_ * tilingData_->wInDim + curOriginW_) * tilingData_->channel; |
| 159 | curInOffset = curN * inHW_ * tilingData_->channel + curOriginIndex_; | 159 | curInOffset = curN * inHW_ * tilingData_->channel + curOriginIndex_; |
| 160 | 160 | ||
| 161 | if (tilingData_->divisorOverride > 0) { | 161 | if (tilingData_->divisorOverride) { |
| 162 | mulsFactor_ = 1.0f / static_cast<float>(tilingData_->divisorOverride); | 162 | mulsFactor_ = 1.0f / static_cast<float>(tilingData_->divisorOverride); |
| 163 | } else if (tilingData_->countIncludePad == 0) { | 163 | } else if (tilingData_->countIncludePad == 0) { |
| 164 | mulsFactor_ = curkH * curkW == 0 ? 0 : 1.0f / static_cast<float>(curkH * curkW); | 164 | mulsFactor_ = curkH * curkW == 0 ? 0 : 1.0f / static_cast<float>(curkH * curkW); |
修改后 上下文逻辑不通顺
1、判断不为0 应该使用 if(xxx != 0) 2、修改后 第一个条件和最后一个esle 等价,但是逻辑不通 若最后一个else 不需要 请删掉
最后建议 if(xxx == 0) { } else {