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

时间:2017-09-05 22:14:28

标签: tensorflow neural-network tensorboard

我一直在使用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)

并建立NN:

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)

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

即便如此,我也找不到好的例子可以创建一个带有tensorboard输出的简单dnnClassifier。任何指导?

我有基本的模型工作,但需要更仔细地检查它,以便最终使用实验进行调整。别管怎么样?

2 个答案:

答案 0 :(得分:3)

在致电DNNClassifier.train时,会接受hooks参数,您可以创建SummarySaverHook并将其添加到hooks

更新

在TensorBoard中添加指标(例如精度)时,您应该采取以下几个步骤:

  1. 定义计算准确度的Tensoracc_op = ...;

  2. Tensor添加到tf.summary.scalartf.summary.scalar('acc', acc_op);

  3. tf.summary中可以有多个tf.Graph,因此我们定义merge_summary_op = tf.summary.merge_all()op合并所有指标Tensor

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

  5. summary_writer添加到SummarySaverHook或使用您自己的代码致电summary_writer

答案 1 :(得分:2)

请参阅此处,了解有关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)
)

注意最后一行并注意你需要括号的位置!