没有简单的方法将 Tensorboard 输出添加到预定义的估计器函数 DnnClassifier?

No easy way to add Tensorboard output to pre-defined estimator functions DnnClassifier?

我一直在使用 TF 1.3 中的估算器界面,包括创建数据输入函数:

training_input_fn = tf.estimator.inputs.pandas_input_fn(x=training_data, y=training_label, batch_size=64, shuffle=True, num_epochs=None)

并构建神经网络:

dnnclassifier = tf.estimator.DNNClassifier( feature_columns=dnn_features, hidden_units=[1024, 500, 100], n_classes=2, model_dir='./tmp/ccsprop', optimizer=tf.train.ProximalAdagradOptimizer( learning_rate=0.001, l1_regularization_strength=0.01 ))

并执行它

dnnclassifier.train(input_fn=training_input_fn, steps=1500)

经过大量搜索,我发现没有简单的方法可以添加 tensorboard 输出,而无需从头开始重新创建模型并在此处指出 https://www.tensorflow.org/extend/estimators

即便如此,我也找不到很好的示例来遵循它们都创建了一个带有张量板输出的简单 dnnClassifier。有什么指导吗?

我的基本模型可以正常工作,但还需要更仔细地检查它,以便最终使用实验进行调整。不明白怎么办?

当调用DNNClassifier.train时,它接受hooks参数,你可以创建一个SummarySaverHook并将其添加到hooks

更新

在 TensorBoard 中添加指标(例如准确度)时,您应该遵循以下几个步骤:

  1. 定义一个计算精度的Tensoracc_op = ...;

  2. Tensor加到tf.summary.scalar中:tf.summary.scalar('acc', acc_op);

  3. tf.Graph中可以有多个tf.summary,所以我们定义一个merge_summary_op = tf.summary.merge_all()得到一个op合并所有metric Tensors.

  4. 将merge_summary_op添加到summary_writer = tf.summary.FileWriter();

  5. summary_writer添加到SummarySaverHook中或用您自己的代码调用summary_writer

有关 GH 的详细讨论,请参阅此处:https://github.com/tensorflow/tensorflow/issues/12974#issuecomment-339856673

这是从固定模型中获得全套 TB 输出的技巧:

dnnclassifier = tf.estimator.DNNClassifier(
  feature_columns=dnn_features,
  hidden_units=[1024, 500, 100],
  n_classes=2, 
  model_dir='./tmp/ccsprop',
  optimizer=tf.train.ProximalAdagradOptimizer(
    learning_rate=0.001,
    l1_regularization_strength=0.01),
  config=tf.estimator.RunConfig().replace(save_summary_steps=10)
)

注意最后一行并注意需要括号的地方!