* Address windows compilation error * Do not allow divide by zero in weight calculation * Update tests
This commit is contained in:
@@ -101,7 +101,8 @@ class SoftmaxMultiClassObj : public ObjFunction {
|
||||
for (int k = 0; k < nclass; ++k) {
|
||||
// Computation duplicated to avoid creating a cache.
|
||||
bst_float p = expf(point[k] - wmax) / static_cast<float>(wsum);
|
||||
const bst_float h = fmax(2.0f * p * (1.0f - p) * wt, kRtEps);
|
||||
const float eps = 1e-16f;
|
||||
const bst_float h = fmax(2.0f * p * (1.0f - p) * wt, eps);
|
||||
p = label == k ? p - 1.0f : p;
|
||||
gpair[idx * nclass + k] = GradientPair(p * wt, h);
|
||||
}
|
||||
|
||||
@@ -292,7 +292,7 @@ XGBOOST_DEVICE inline T CalcGain(const TrainingParams &p, T sum_grad, T sum_hess
|
||||
template <typename TrainingParams, typename T>
|
||||
XGBOOST_DEVICE inline T CalcWeight(const TrainingParams &p, T sum_grad,
|
||||
T sum_hess) {
|
||||
if (sum_hess < p.min_child_weight) {
|
||||
if (sum_hess < p.min_child_weight || sum_hess <= 0.0) {
|
||||
return 0.0;
|
||||
}
|
||||
T dw;
|
||||
|
||||
Reference in New Issue
Block a user