diff --git a/paddle/gserver/layers/CostLayer.cpp b/paddle/gserver/layers/CostLayer.cpp index ce071323ff585d28c9eaf80fec9be2394be526d1..0bb6f84c22eefbfb3678d6f15651f22c91454c2c 100644 --- a/paddle/gserver/layers/CostLayer.cpp +++ b/paddle/gserver/layers/CostLayer.cpp @@ -462,8 +462,8 @@ void LambdaCost::calcGrad(const real* outputScore, real score_j = score[index_j]; real dcgDif = 0; if (j < sortSize) { - dcgDif = (std::pow(2, score_i) - std::pow(2, score_j)) / - (std::log(i + 2) - std::log(j + 2)); + dcgDif = (std::pow(2, score_i) - std::pow(2, score_j)) * + (1 / std::log(i + 2) - 1 / std::log(j + 2)); } else { dcgDif = (std::pow(2, score_i) - std::pow(2, score_j)) / std::log(i + 2);