diff --git a/nntrainer/layers/pow_layer.cpp b/nntrainer/layers/pow_layer.cpp index 8859738..9f55665 100644 --- a/nntrainer/layers/pow_layer.cpp +++ b/nntrainer/layers/pow_layer.cpp @@ -33,6 +33,11 @@ void PowLayer::forwarding_operation(const Tensor &input, Tensor &hidden) { void PowLayer::calcDerivative(RunLayerContext &context) { float exp = std::get(pow_props).get(); + // The zero-exponent forward is constant, so avoid evaluating x^-1. + if (exp == 0.0f) { + context.getOutgoingDerivative(SINGLE_INOUT_IDX).setZero(); + return; + } context.getOutgoingDerivative(0).copy( context.getIncomingDerivative(SINGLE_INOUT_IDX) .multiply(exp)