如何在Tensorflow DNNC分类器估计器中打印训练进度



我想在互联网被屏蔽的Kaggle笔记本电脑环境中用tf.estimator.DNNClassifier训练一个模型。因此,我无法使用Tensorboard来监控进度。因此,我想在标准输出中记录进度(类似于我们在Keras模型上调用fit方法(,但我无法使其工作。

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

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

您需要使用replace在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步记录一次丢失。

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

logging.info('I am info')

最新更新