如何使用自定义模型评估算法调整超参数?

时间:2018-12-15 01:56:23

标签: google-cloud-ml

在我的模型评估算法中,我想获得验证数据的模型预测,并应用一种算法,该算法根据验证数据和预测对一些现实情况进行建模和模仿。

在我的方案中,评估算法不仅取决于真实目标值(y_true)和预测(y_pred),而且取决于输入验证数据(X)以输出最终模型得分。因此,似乎无法为用例使用带有自定义指标的估算器。

实现评估/评分算法对我来说是微不足道的,但是如何将评估算法的输出传递回ML Engine的超参数调整任务,以便它实际上可以优化超参数并在超参数结束时输出最佳超参数值调整任务?

1 个答案:

答案 0 :(得分:3)

实现评估/评分算法后,请使用hypertune包写出数字:

import hypertune
hpt = hypertune.HyperTune()

# every time you evaluate, write out the evaluation metric
eval_output_value = your_evaluation_algo(...)    
hpt.report_hyperparameter_tuning_metric(
    hyperparameter_metric_tag='mymetric',
    metric_value=eval_output_value,
    global_step=0)

然后,将上面的metric_tag指定为CMLE的评估指标。

您可以使用PyPI安装Hypertune:

   pip install cloudml-hypertune

在trainer软件包的setup.py中,请确保指定hypertune软件包:

 install_requires=[
      ..., # other dependencies
      'cloudml-hypertune',  # Required for hyperparameter tuning.
  ],

有关使用scikit-learn的示例,请参见https://github.com/GoogleCloudPlatform/training-data-analyst/tree/master/blogs/sklearn/babyweight,因此不能依赖TensorFlow的Estimator API编写评估指标。