使用tensorflow的估计器进行预测.DNNRegressor

时间:2018-06-07 08:50:55

标签: python tensorflow tensorflow-estimator

我对tensorflow很新,为了学习使用它我目前正在尝试实现一个非常简单的DNNRegressor,它可以预测2D中对象的移动但我似乎无法使用预测函数。

为此我有一些输入数据 - 在以前的许多时间步骤中对象的x和y坐标。如果对象继续以相同的速度向同一方向移动,我希望输出合理估计对象的位置。

我使用的是tensorflow版本1.8.0

我的回归定义如下:

CSV_COLUMN_NAMES = ['X_0', 'X_1', 'X_2', 'X_3', 'X_4', 'Y_0', 'Y_1', 'Y_2', 'Y_3', 'Y_4', 'Y_5']

my_feature_columns = []
for key in columnNames:
     my_feature_columns.append(tf.feature_column.numeric_column(key=key))


regressor = estimator.DNNRegressor(feature_columns=my_feature_columns,
                                           label_dimension=1,
                                           hidden_units=hidden_layers,
                                           model_dir=MODEL_PATH,
                                           dropout=dropout,
                                           config=test_config)

我的输入就像预制估算器的tensorflow教程中的那个,是一个以列为关键字的字典。 可以看到此输入的示例here

regressor.train(参数)和regressor.evaluate(参数)似乎工作正常,但预测却没有。

tensorflow site上的代码并行,我尝试这样做:

y_pred = regressor.predict(input_fn=eval_input_fn(X_test, labels=None, batch_size=1))

似乎也有效。

我现在面临的问题是我无法从y_pred对象中获得任何内容。

当我输入print(y_pred)时,我得到<generator object Estimator.predict at 0x7fd9e8899888>,这对我来说应该可以迭代但是

    for elem in y_pred:
        print(elem)

结果为TypeError: unsupported callable

同样,我对此很陌生,如果答案很明显,我很抱歉,如果有人能告诉我这里的错误,我将非常感激。

1 个答案:

答案 0 :(得分:1)

input_fnregressor.predict应该是一个功能。请参阅definition

  

input_fn:构造特征的函数。

您需要将代码更改为:

y_pred = regressor.predict(input_fn=eval_input_fn)