2017-01-16 16 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) 
関連する問題