我想用tf.estimator.DNNClassifier
在互联网被封锁的Kaggle笔记本环境中训练一个模型。因此,我不能使用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
。
发布于 2018-12-24 06:58:25
在尝试了这么多解决方案后,我终于发现问题中的所有代码都是必要的,比如将日志级别设置为INFO,并将RunConfig
对象传递给DNNClassifier
,但是由于Kaggle内核笔记本中的一个bug,在训练分类器之前,我们首先需要记录一些任意的东西,以使Tensorflow日志在Kaggle中工作!例如:
logging.info('I am info')
发布于 2018-12-21 22:13:19
您需要使用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步之后记录一次损失。
https://stackoverflow.com/questions/53699201
复制相似问题