我不认为这是一个bug,从DNNClassifier的源代码中,我可以看出它的用法与TensorFlowDNNClassifier不同。 DNNClassifier 的构造函数没有步骤参数:
def __init__(self,
hidden_units,
feature_columns=None,
model_dir=None,
n_classes=2,
weight_column_name=None,
optimizer=None,
activation_fn=nn.relu,
dropout=None,
config=None)
正如你所看到的here https://github.com/tensorflow/tensorflow/blob/r0.9/tensorflow/contrib/learn/python/learn/estimators/dnn.py#L89。相反,DNNClassifier 继承自的 fit() 方法基础估计器 https://github.com/tensorflow/tensorflow/blob/r0.9/tensorflow/contrib/learn/python/learn/estimators/estimator.py#L138现在有了steps参数,请注意batch_size也会发生同样的情况:
def fit(self, x=None, y=None, input_fn=None, steps=None, batch_size=None,
monitors=None):
对于“它挂起而没有完成?”,在 BaseEstimator 的 fit() 方法的文档中解释说,如果步骤是None
(作为默认值),模型将永远训练。
我仍然不明白为什么我想永远训练一个模型。我的猜测是,如果我们想尽早停止验证数据,创建者认为这种方式对分类器来说更好,但正如我所说,这只是我的猜测。
正如您所看到的,DNNClassifier 不会提供任何反馈,因为已弃用
TensorFlowDNNClassifier,假设可以使用 DNNClassifier 构造函数中存在的“config”参数设置反馈。所以你应该传递一个 RunConfig 对象作为配置,并且在这个对象的参数中你应该设置详细参数,不幸的是我尝试设置它以便我可以看到丢失的进度,但没有那么幸运。
我推荐你看一下袁唐博客的最新帖子here http://terrytangyuan.github.io/,skflow(又名 tf learn)的创建者之一。