【问题标题】:Hyperparameter metric in Google Cloud ML should contain the `val` prefix?Google Cloud ML 中的超参数指标应该包含“val”前缀吗?
【发布时间】:2018-09-24 00:19:23
【问题描述】:

在为 Google Cloud ML 定义超参数指标时,我可以使用 mean_squared_error,但如果我希望它比较验证集的准确性,我应该使用 val_mean_squared_error 吗?还是它自己做的?

这是示例 hptuning 配置:

trainingInput:
  ...
  hyperparameters:
    goal: MINIMIZE
    hyperparameterMetricTag: ???mean_squared_error

这是合适的调用:

history = m.fit(train_x, train_y, epochs=epochs, batch_size=2048,
                         shuffle=False,
                         validation_data=(val_x, val_y),
                         verbose=verbose,
                         callbacks=callbacks)

由于我正在传递我的验证数据和 Keras,我怀疑是否应该使用 val_mean_squared_error

【问题讨论】:

  • val_mean_squared_error 不是 TF 的内置指标。如果您定义自己的仅在验证集上评估的指标,它应该可以工作。这是使用您的自定义指标和超参数调整的说明 (cloud.google.com/ml-engine/docs/tensorflow/…)。

标签: keras google-cloud-ml hyperparameters


【解决方案1】:

答案是:如果您(我)希望 Google Cloud ML 超参数调优在使用 Keras 时使用 VALIDATION 指标而不是训练指标,您需要指定 val_mean_squared_error(或 val_accuracy 等)。

如果您坚持使用accuracymean_squared_error,您将偏向于 Google Cloud ML 调整过程来选择过拟合模型。为避免在搜索参数时过度拟合,您应该创建自己的指标(如评论中所述)或使用带有验证集的 fit 方法和我们的 val 指标。


我已更新问题,明确表示我正在使用 Keras,它会自动创建 val_mean_squared_error

为了得到答案,我意识到我可以做一个简单的测试:在使用 Keras 时使用 val_mean_squared_errormean_squared_error,并使用验证参数集调用 fit,并将作业结果与报告的指标进行比较。

【讨论】:

  • 谢谢!您可以通过在本地机器上运行代码来检查它,看看是否有val_mean_squared_error 写入最终的 TF 摘要。如果有,那么它应该只适用于 CloudML Engine。
  • 是的,确实如此。如果您传递验证集(或验证百分比)参数,Keras 会自动在摘要(和历史记录)中包含损失函数和每个指标的“val_”。
猜你喜欢
  • 1970-01-01
  • 2019-05-01
  • 2019-03-10
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
相关资源
最近更新 更多