【问题标题】:The fit function from tf.contrib.learn.LinearRegressor asks to switch to tf.train.get_global_steptf.contrib.learn.LinearRegressor 的 fit 函数要求切换到 tf.train.get_global_step
【发布时间】:2018-06-22 10:42:07
【问题描述】:

我正在尝试让LinearRegressor 工作,但我收到了一个似乎没有太多文档的错误。

当我这样做时:

regressor = tf.contrib.learn.LinearRegressor(feature_columns=linear_features)

regressor.fit(input_fn=training_input_fn, steps=10000)

regressor.evaluate(input_fn=eval_input_fn)

我得到错误:

更新说明:请切换到tf.train.get_global_step

我不知道如何继续。

我从文档中阅读:

不推荐使用某些参数。它们将在 2016-12-01 之后被删除。 更新说明:Estimator 与 Scikit Learn 解耦 通过移动到单独的类 SKCompat 来进行接口。参数 x、y 和 batch_size 仅在 SKCompat 类中可用,Estimator 将 只接受 input_fn。转换示例:est = Estimator(...) -> est = SKCompat(Estimator(...))

但我不确定我应该更改什么,或者如何切换到全局步骤。

我尝试使用tf.estimator.LinearRegressor 主要是因为我没有想法,并且做了这样的事情:

estimator = tf.estimator.LinearRegressor(feature_columns=linear_features)

estimator.train(input_fn=training_input_fn)
estimator.evaluate(input_fn=eval_input_fn)
estimator.predict(input_fn=eval_input_fn)

但根本没有输出。

【问题讨论】:

    标签: python tensorflow machine-learning linear-regression tensorflow-estimator


    【解决方案1】:

    更新说明:请切换到tf.train.get_global_step

    其实这不是错误,而是警告。正是因为您正在使用 contrib 包而记录它(请参阅 this discussion,简短摘要:已弃用)。

    您应该切换到核心 tf.estimator API,其中包括所有内容:

    • tf.estimator.LinearRegressor 而不是 tf.contrib.learn.LinearRegressor
    • tf.estimator.inputs.numpy_input_fn 而不是 tf.contrib.learn.io.numpy_input_fn
    • tf.feature_column.numeric_column 而不是 tf.contrib.layers.real_valued_column
    • ...

    新的Estimator 看不到任何东西的原因可能是eval_input_fn 功能。请务必指定num_epochs=1,否则在评估期间它将一次又一次地循环数据集。

    【讨论】:

      猜你喜欢
      • 2019-03-23
      • 2018-01-14
      • 2012-03-13
      • 1970-01-01
      • 2018-01-14
      • 2015-11-21
      • 2012-11-30
      • 1970-01-01
      • 2012-01-05
      相关资源
      最近更新 更多