如何获取SageMaker超参数调整作业的所有指标?

时间:2018-10-16 14:34:09

标签: amazon-web-services amazon-sagemaker hyperparameters

SageMaker确实提供了HyperparameterTuningJobAnalytics对象,但是它仅包含最终的客观指标值。

这是示例代码。

tuner = sagemaker.HyperparameterTuningJobAnalytics(tuning_job_name)

full_df = tuner.dataframe()

它返回的数据框只包含客观指标作为FinalObjectiveValue列。

如果我为调优工作定义了多个指标,那么如何在SageMaker中获得其他指标?

1 个答案:

答案 0 :(得分:0)

您可以使用describe_training_job检索为工作配置的所有指标。这是使用boto3的示例:

创建SageMaker客户端:

smclient = boto3.client('sagemaker')

获取所有培训工作的列表(请注意此处的示例参数-仅按最后的客观指标按降序排序获得最后100个工作):

trjobs = smclient.list_training_jobs_for_hyper_parameter_tuning_job(
    HyperParameterTuningJobName='YOUR_TUNING_JOB_NAME_HERE',
    MaxResults=100,
    SortBy='FinalObjectiveMetricValue',
    SortOrder='Descending')

遍历每个作业摘要并检索所有指标:

for trjob in trjobs['TrainingJobSummaries']:
    jobd = smclient.describe_training_job(TrainingJobName=trjob['TrainingJobName'])
    metrics = {m['MetricName']:  m['Value'] for m in jobd['FinalMetricDataList']}
    print '%s Metrics: %s' % (trjob['TrainingJobName'], metrics)