本地超参数调整-Tensorflow Google Cloud ML Engine

时间:2018-11-29 20:26:04

标签: tensorflow gcloud google-cloud-ml tensorflow-estimator hyperparameters

是否可以使用ML Engine调整超参数以在本地训练模型?该文档仅提及在云中进行超参数调整的培训(提交作业),而没有提及在本地进行。

否则,是否还有另一种常用的超参数调整,如普查估计器教程中那样将命令参数传递给task.py?

https://github.com/GoogleCloudPlatform/cloudml-samples/tree/master/census

3 个答案:

答案 0 :(得分:1)

您无法在本地执行HPTuning(Cloud ML Engine支持的基于Bayesian Optimization的HPTuning),因为它是Cloud ML Engine提供的托管服务。还有其他执行超参数调整的方法,例如Scikit-learn GridSearch,但在此任务中效果不佳。

答案 1 :(得分:1)

如Puneith所说,超参数调整不能在ML-Engine中本地运行。

SciKit Optimize提供了一个易于使用的包装器,可与包括估计器在内的任何模型一起使用。只需将针对N个纪元进行训练的代码放到自己的函数中,该函数将返回评估1精度,1-auroc或损失度量以最小化。

import numpy as np
from skopt import gp_minimize

def train(hyperparam_config):
    # set from passed in hyperparameters
    learning_rate = hyperparam_config[0]
    num_layers = hyperparam_config[2]
    # run training
    res = estimator.train_and_evaluate()...
    return res['loss']  # return metric to minimize

hyperparam_config = [Real(0.0001, 0.01, name="learning_rate"),
                      Integer(3, 10, name="num_layers")]
res = gp_minimize(train, hyperparam_config)
with open('results.txt', 'w') as wf:
    wf.write(str(res))
print(res)

来源: https://github.com/scikit-optimize/scikit-optimize/blob/master/examples/hyperparameter-optimization.ipynb

答案 2 :(得分:0)

检查Sherpa,出色的超参数优化库。

它说:

  

超参数优化,使研究人员能够快速进行实验,可视化和缩放

那里有很多HyperParameter优化库,但是使用Sherpa可以将结果可视化。