如何在Tensorflow DNNClassifier估计器中打印训练进度?

时间:2018-12-10 03:42:01

标签: python tensorflow tensorflow-estimator

我想在封锁互联网的Kaggle笔记本环境中使用tf.estimator.DNNClassifier训练模型。因此,我无法使用Tensorboard来监视进度。因此,相反,我想在标准输出中记录进度(类似于在Keras模型上调用fit方法时),但是我无法使其正常工作。

到目前为止,我一直在尝试将日志记录级别设置为INFO并将tf.estimator.RunConfig实例传递给估计器。 RunConfig有一个log_step_count_steps属性,默认值为100,这似乎与我要查找的内容有关,但是它不起作用。这是代码的一部分:

import logging;
logging.getLogger().setLevel(logging.INFO)
tf.logging.set_verbosity(tf.logging.INFO)

config = tf.estimator.RunConfig()
classifier = tf.estimator.DNNClassifier(
    feature_columns = feature_columns,
    hidden_units = [128, 64],
    n_classes = 2,
    config = config
)

classifier.train(input_fn=train_input_fn)

我使用Tensorflow版本1.11.0-rc1

2 个答案:

答案 0 :(得分:0)

您需要使用替换在RunConfig中设置所需的值。

config = tf.estimator.RunConfig().replace(keep_checkpoint_max = 5, 
                    log_step_count_steps=20, save_checkpoints_steps=200)
classifier = tf.estimator.DNNClassifier(
    feature_columns = feature_columns,
    hidden_units = [128, 64],
    n_classes = 2,
    config = config
)

classifier.train(input_fn=train_input_fn)

上面的代码应该每20个步骤记录一次丢失。

答案 1 :(得分:0)

尝试了许多解决方案后,我最终发现问题中的所有代码都是必需的,例如将日志级别设置为INFO并将RunConfig对象传递给DNNClassifier,但是由于一个错误在Kaggle内核笔记本中,在训练分类器之前,我们首先需要记录任意内容以使Tensorflow日志在Kaggle中工作!例如:

logging.info('I am info')