2017-01-16 50 views
1

這與問題skflow regression predict multiple values非常相似。然而,更高版本的TensorFlow似乎使這個問題的答案過時了。如何使contrib.learn(SKFLOW)迴歸預測多個值(TensorFlow 0.12.1)

我希望能夠在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 

我沒有看到關於打破這一表明,對於多路輸出的方法已經改變改變所有的版本註釋。有沒有另一種方法來做到這一點?

回答

0

正如tf.contrib.learn.DNNRegressor文檔中所述,您可以使用label_dimension參數,這正是您要查找的參數。與此PARAM

您的代碼行會做你想要什麼:

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)