Amazon SageMaker训练LightGBM时超参数解析失败求助
解决Amazon SageMaker中LightGBM模型超参数解析失败问题
错误原因
你遇到的Failed to parse hyperparameter objective value binary to Json错误,根源是使用SageMaker JumpStart预置LightGBM镜像时,字符串类型的超参数必须以JSON格式字符串传递。直接传入"binary"会被训练工具包判定为非JSON格式的原始字符串,导致解析失败。
解决方法
方法1:手动包裹JSON格式字符串
修改set_hyperparameters中的objective参数,用双引号包裹原始字符串后传递:
lgbm_train.set_hyperparameters( objective='"binary"', # 用双引号包裹原始字符串,符合JSON格式要求 early_stopping_round=150, num_threads=20, learning_rate=0.01, is_unbalance=True, max_depth=15, num_leaves=15, num_iterations=500, )
方法2:使用json.dumps格式化(更通用)
先导入json模块,通过json.dumps将字符串转换为标准JSON格式后传递:
import json lgbm_train.set_hyperparameters( objective=json.dumps("binary"), early_stopping_round=150, num_threads=20, learning_rate=0.01, is_unbalance=True, max_depth=15, num_leaves=15, num_iterations=500, )
补充说明
该问题仅针对**通过SageMaker JumpStart(即使用model_id获取镜像)**的训练场景,JumpStart的训练容器对超参数解析有严格的JSON格式要求。如果是直接使用LightGBM框架镜像(指定framework="lightgbm"获取镜像),则无需额外处理字符串类型的超参数。
内容的提问来源于stack exchange,提问作者Ayan Biswas
相关产品推荐
相关产品推荐

