如何在tensorflow r0.9(skflow)中训练DNNClassifier时打印进度?

9

我无法得知DNNClassifier在训练时是否打印进度,例如损失和验证分数。据我所知,可以使用从BaseEstimator继承的config参数来打印损失,但是当我传递了一个RunConfig对象时,分类器没有打印任何内容。

from tensorflow.contrib.learn.python.learn.estimators import run_config

config = run_config.RunConfig(verbose=1)
classifier = learn.DNNClassifier(hidden_units=[10, 20, 10],
                             n_classes=3,
                             config=config)
classifier.fit(X_train, y_train, steps=1000)

我是否漏掉了什么?我检查了RunConfig如何处理verbose参数,似乎它只关心verbose是否大于1, 这与文档不符:

verbose: 控制详细程度的参数,可能的值为: 0: 算法和调试信息被静音。 1: 训练器打印进度。 2: 打印日志设备放置。

至于验证分数,我认为使用 monitors.ValidationMonitor应该就可以了,但是当我尝试使用时,分类器没有打印任何东西,而且在尝试使用early_stopping_rounds时也没有发生任何事情。我搜索了文档或源代码中的注释,但是我找不到任何有关monitors的内容。

2个回答

17

在调用fit函数之前添加这些内容可以显示训练的进度:

import logging
logging.getLogger().setLevel(logging.INFO)

示例:

INFO:tensorflow:global_step/sec: 0
INFO:tensorflow:Training steps [0,1000000)
INFO:tensorflow:Step 1: loss = 10.5043
INFO:tensorflow:training step 100, loss = 10.45380 (0.223 sec/batch).
INFO:tensorflow:Step 101: loss = 10.5623
INFO:tensorflow:training step 200, loss = 10.46701 (0.220 sec/batch).
INFO:tensorflow:Step 201: loss = 10.3885
INFO:tensorflow:training step 300, loss = 10.36501 (0.232 sec/batch).
INFO:tensorflow:Step 301: loss = 10.3441
INFO:tensorflow:training step 400, loss = 10.44571 (0.220 sec/batch).
INFO:tensorflow:Step 401: loss = 10.396
INFO:tensorflow:global_step/sec: 3.95

3
在训练之前添加以下这行代码:
import logging
tf.logging.set_verbosity(tf.logging.INFO)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接