You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia的XGBoost v2.2.1中抑制训练迭代日志输出?

解决XGBoost v2.2.1在Julia中无法抑制训练输出的问题

针对你使用Julia 1.8.2和XGBoost v2.2.1时,设置print_every_n=0和verbosity=0仍有训练轮次train-rmse输出的情况,可尝试以下几种方法:

方法1:将verbosity移入参数字典

旧版本的XGBoost.jl可能要求verbosity参数放在参数字典中,而非作为xgboost函数的独立参数。修改参数配置:

params_xgb = Dict(
    :max_depth => Int(2),
    :eta => 0.01,
    :objective => "reg:squarederror",
    :print_every_n => Int(0),
    :verbosity => 0  # 将verbosity加入参数字典
)

调用时移除独立的verbosity=0参数:

@time m_xgb = xgboost(dtrain, num_round=50, param = params_xgb);

方法2:添加原生XGBoost的silent参数

部分旧版本的XGBoost Julia绑定依赖原生的silent参数控制输出,尝试添加该参数:

params_xgb = Dict(
    :max_depth => Int(2),
    :eta => 0.01,
    :objective => "reg:squarederror",
    :print_every_n => Int(0),
    :silent => 1  # 原生静默参数,1表示关闭所有训练输出
)

方法3:重定向输出(终极方案)

如果上述参数方法无效,说明输出来自XGBoost底层C库,可通过Julia的输出重定向捕获:

# Linux/macOS环境下重定向到/dev/null
redirect_stdout(devnull) do
    @time m_xgb = xgboost(dtrain, num_round=50, verbosity=0, param = params_xgb);
end

若输出流向错误流,可同时重定向stderr:

redirect_stderr(devnull) do
    redirect_stdout(devnull) do
        @time m_xgb = xgboost(dtrain, num_round=50, verbosity=0, param = params_xgb);
    end
end

注意:你的代码中rand(T, ...)的T未定义,需替换为具体类型(如Float64)才能正常运行。

内容的提问来源于stack exchange,提问作者Richi W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:20:44