【问题标题】:How to make contrib.learn (SKFLOW) regression predict multiple values (TensorFlow 0.12.1)如何使 contrib.learn (SKFLOW) 回归预测多个值 (TensorFlow 0.12.1)
【发布时间】:2017-05-30 20:46:15
【问题描述】:

这与问题skflow regression predict multiple values 非常相似。然而,更高版本的 TensorFlow 似乎已经过时了这个问题的答案。

我希望能够在 TensorFlow Learn 回归神经网络 (DNNRegressor) 中拥有多个输出神经元。我升级了引用问题中的代码以解决 TensorFlow 中的重大更改,但仍然出现错误。

import numpy as np
import tensorflow.contrib.learn as skflow
import tensorflow as tf
from sklearn.metrics import mean_squared_error

# Create random dataset.
rng = np.random.RandomState(1)
X = np.sort(200 * rng.rand(100, 1) - 100, axis=0)
y = np.array([np.pi * np.sin(X).ravel(), np.pi * np.cos(X).ravel()]).T

# Fit regression DNN model.
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=X.shape[0])]
regressor = skflow.DNNRegressor(hidden_units=[5, 5],feature_columns=feature_columns)
regressor.fit(X, y)
score = mean_squared_error(regressor.predict(X), y)
print("Mean Squared Error: {0:f}".format(score))

但这会导致:

ValueError: Shapes (?, 1) and (?, 2) are incompatible

我没有看到任何关于重大更改的发行说明,表明多个输出的方法已更改。还有其他方法吗?

【问题讨论】:

    标签: tensorflow skflow


    【解决方案1】:

    正如tf.contrib.learn.DNNRegressor 文档中所述,您可以使用label_dimension 参数,这正是您要寻找的。​​p>

    带有此参数的代码行将执行您想要的操作:

    regressor = skflow.DNNRegressor(hidden_units=[5, 5],
                                    feature_columns=feature_columns,
                                    label_dimension=2)
    

    标准predict() 返回一个生成器对象。要获取数组,必须添加as_iterable=False

    score = metrics.mean_squared_error(regressor.predict(X, as_iterable=False), y)
    

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 2019-12-31
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多