Tensorflow超参数调整-未输出每个试验的指标

时间:2019-05-30 18:44:07

标签: tensorflow metrics hyperparameters

我想在稍微修改的DNNClassifier中调整超参数。我能够运行调优作业,但它也成功完成了,但是输出未显示每次试用的最终指标。最终的输出如下所示:

{
  "completedTrialCount": "2",
  "trials": [
    {
      "trialId": "1",
      "hyperparameters": {
        "myparam": "0.003"
      }
    },
    {
      "trialId": "2",
      "hyperparameters": {
        "myparam": "0.07"
      }
    }
  ],
  "consumedMLUnits": 1.48,
  "isHyperparameterTuningJob": true
}

如何获得每个试验的最终指标,以便确定哪个值是最好的?

我的代码如下。

我的DNNClassifier:

    classifier = DNNClassifier(
        feature_columns=feature_columns,
        hidden_units=hu,
        optimizer=tf.train.AdamOptimizer(learning_rate=lr),
        activation_fn=tf.nn.leaky_relu,
        dropout=dr,
        n_classes=2,
        config=self.get_run_config(),
        model_dir=self.model_dir,
        weight_column=weight_column
    )

    tf.contrib.estimator.add_metrics(classifier, compute_metrics)

def compute_metrics(labels, predictions):
    return {'my-roc-auc': tf.metrics.auc(labels, predictions)}

超参数规范如下。

trainingInput:
  hyperparameters:
    hyperparameterMetricTag: my-roc-auc
    maxTrials: 2
    enableTrialEarlyStopping: True
    params:
      - parameterName: myparam
        type: DISCRETE
        discreteValues:
          - 0.0001
          - 0.0005
          - 0.001
          - 0.003
          - 0.005
          - 0.007
          - 0.01
          - 0.03
          - 0.05
          - 0.07
          - 0.1

我基本上遵循here的说明。

1 个答案:

答案 0 :(得分:0)

解决了。问题是

totals = dat.groupby('Hours')['Amount'].sum()

dat_with_totals = dat.merge(totals, on='Hours')

应该是

tf.contrib.estimator.add_metrics(classifier, compute_metrics)