Skip to main content
 首页 » 编程设计

python之使用 Python SDK 的内置算法的 Amazon SageMaker 超参数调整错误

2024年12月31日28shangdawei

当使用 Python SDK 使用内置算法之一(在本例中为图像分类器)启动 SageMaker 超参数调整作业时,代码如下:

# [...] Some lines elided for brevity 
 
from sagemaker.tuner import HyperparameterTuner, IntegerParameter, CategoricalParameter, ContinuousParameter 
hyperparameter_ranges = {'optimizer': CategoricalParameter(['sgd', 'adam']), 
                         'learning_rate': ContinuousParameter(0.0001, 0.2), 
                         'mini_batch_size': IntegerParameter(2, 30),} 
 
objective_metric_name = 'validation:accuracy' 
 
tuner = HyperparameterTuner(image_classifier, 
                            objective_metric_name, 
                            hyperparameter_ranges, 
 
                            max_jobs=50, 
                            max_parallel_jobs=3) 
 
tuner.fit(inputs=data_channels, logs=True) 

作业失败,我在 SageMaker Web 控制台中检查作业状态时收到此错误:

ClientError: Additional hyperparameters are not allowed (u'sagemaker_estimator_module', u'sagemaker_estimator_class_name' were unexpected) (caused by ValidationError)  
 
Caused by: Additional properties are not allowed (u'sagemaker_estimator_module', u'sagemaker_estimator_class_name' were unexpected)  
 
Failed validating u'additionalProperties' in schema: {u'$schema': u'http://json-schema.org/schema#', u'additionalProperties': False, u'definitions': {u'boolean_0_1': {u'oneOf': [{u'enum': [u'0', u'1'], u'type': u'string'}, {u'enum': [0, 1], u'type': u'number'}]}, u'boolean_true_false_0_1': {u'oneOf': [{u'enum': [u'true', u'false', 

我没有在任何地方显式传递 sagemaker_estimator_module 或 sagemaker_estimator_class_name 属性,所以我不确定为什么会返回此错误。

开始这项调优工作的正确方法是什么?

请您参考如下方法:

我通过 this post translated from Japanese 找到了答案.

使用 Python SDK 中的内置算法启动超参数调整作业时,您需要将 include_cls_metadata=False 作为关键字参数显式传递给 tuner .fit() 像这样:

tuner.fit(inputs=data_channels, logs=True, include_cls_metadata=False)