我有一个scikit-learn
模型,我可以GCP
使用AI Platform training
. 我还想使用AI Platform training
. 这是可能的,只需要传递带有参数及其范围的 YAML:
params:
- parameterName: max_df
type: DOUBLE
minValue: 0.0
maxValue: 1.0
scaleType: UNIT_LINEAR_SCALE
- parameterName: min_df
type: DOUBLE
minValue: 0
maxValue: 1.
scaleType: UNIT_LINEAR_SCALE
这里的问题是两个参数之间存在一些依赖关系:min_df<max_df
. 如果不是这种情况scikit-learn
,将按预期失败。
在 YAML 中似乎不可能表达这种依赖关系。
我可以调整失败的试验次数,但如果我不走运并且我的第一份工作,df_min>df_max
那么超参数调整的整个过程将停止。这似乎不是一个有效的选择。
链接文档
我可以在我的 python 代码中控制它并确保df_min<df_max
我应该返回到代码中进行超参数调整(我猜是使用贝叶斯优化),以便它了解这种参数选择是无效的?
# this is for hyperparameter tuning
hpt = hypertune.HyperTune()
hpt.report_hyperparameter_tuning_metric(
hyperparameter_metric_tag='accuracy',
metric_value=accuracy,
global_step=0)
只是返回 0.0 的精度就足够了吗?或者我应该返回None
还是NaN
?我没有找到关于这个主题的任何文档。
额外问题:当我使用 YAML 时,我只能传递字符串,而不能像 None 或 NULL link doc
- parameterName: FT_norm
type: CATEGORICAL
categoricalValues: ['l1', 'l2', 'None']
在将值传递给模型之前,我需要直接在 python 代码中转换'None'
为。None
有没有更好的方法来处理这种情况?(我正在使用 gcloud cli)例如使用 GCP python 客户端库?