| 66 | return gradCommon({loss}, parameters, backwardMap, blockName); |
| 67 | } |
| 68 | Express::VARP OpGrad::divideAvoidZero(MNN::Express::VARP y, MNN::Express::VARP x) { |
| 69 | auto p = MNN::Express::_Abs(x); |
| 70 | auto sx = MNN::Express::_Sign(x); |
| 71 | p = MNN::Express::_Maximum(p, MNN::Express::_Scalar<float>(0.000001f)); |
| 72 | return MNN::Express::_Divide(y, p) * sx; |
| 73 | } |
| 74 | static std::once_flag gInit; |
| 75 | void OpGrad::init() { |
| 76 | std::call_once(gInit, []() { |