SageMaker确实提供了HyperparameterTuningJobAnalytics对象,但是它仅包含最终的客观指标值。
这是示例代码。
tuner = sagemaker.HyperparameterTuningJobAnalytics(tuning_job_name)
full_df = tuner.dataframe()
它返回的数据框只包含客观指标作为FinalObjectiveValue列。
如果我为调优工作定义了多个指标,那么如何在SageMaker中获得其他指标?
答案 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)