使用 tensorflow 进行预测 estimator.DNNRegressor

Making Prediction with tensorflow's estimator.DNNRegressor

我对 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(arguments) 和 regressor.evaluate(arguments) 似乎工作得很好,但预测没有。

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

同样,我对此很陌生,如果答案很明显,我很抱歉,但如果有人能告诉我我在这里做错了什么,我将不胜感激。

input_fnregressor.predict应该是一个函数。见 definition:

input_fn: A function that constructs the features.

您需要将代码更改为:

y_pred = regressor.predict(input_fn=eval_input_fn)