2016-08-28 6 views
2

Tensorflow/SkFlowを初めて使用しています。複数のターゲット列を使用して複数の出力予測を生成できるかどうかを判断しようとしています。SkFlowを使用した複数のターゲット列TensorFlowDNNRegressor

私は以下のコードを試してみましたが、これは許容入力していないようです:

import numpy as np 
import tensorflow.contrib.learn as skflow 

# Sample data (obviously actual data would contain a lot more rows) 
training_data = np.asarray([ 
    np.asarray([ 215.0, 5.0], dtype=np.float64), 
    np.asarray([ 283.0, 2.0], dtype=np.float64) 
], dtype=np.float64) 
training_target = np.asarray([ 
    np.asarray([ 220.0, 210.0], dtype=np.float64), 
    np.asarray([ 285.0, 281.0], dtype=np.float64) 
], dtype=np.float64) 

regressor = skflow.TensorFlowDNNRegressor(hidden_units=[2,4,2]) 
regressor.fit(x=training_data, y=training_target, steps=2000) 

print(regressor.predict(training_set.data)[0]) 

私はこのコードを実行すると、私は次のエラーを取得する:

File "/some/path/anaconda/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/tensor_shape.py", line 741, in assert_is_compatible_with 
raise ValueError("Shapes %s and %s are incompatible" % (self, other)) 
ValueError: Shapes (?, 1) and (?, 2) are incompatible 

はそれが可能ですSkFlowを使ってこの作品のようなものを作る? DNNRegressorを使用してコードがある

+0

任意の更新ソリューション?私は同じ問題に直面している! – user40780

答えて

2

:私はそれ以外の場合は、Y_trainの形状は、N * 1の場合、このコードは動作しますが、テストとして

import numpy as np 
from sklearn.cross_validation import train_test_split 
from tensorflow.contrib import learn 
import tensorflow as tf 
import logging 
#logging.getLogger().setLevel(logging.INFO) 

#Some fake data 

N=200 
X=np.array(range(N),dtype=np.float32)/(N/10) 
X=X[:,np.newaxis] 

Y=np.sin(X.squeeze())+np.random.normal(0, 0.5, N) 

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, 
                train_size=0.8, 
                test_size=0.2) 


reg=learn.DNNRegressor(hidden_units=[10,10]) 
reg.fit(X_train,Y_train,steps=500) 

が、それは失敗します。そして私はこの問題を解決する方法を知らない。

しかし、私はtflearnモジュールを使用して、複数の目標回帰のデモを書く、それはあなたに役立つかもしれません。

import tflearn 
import tflearn.datasets.mnist as mnist 

X,Y,testX,testY = mnist.load_data(one_hot=True) 

input_layer = tflearn.input_data(shape=[None, 784],name='input') 
dense1 = tflearn.fully_connected(input_layer,128,name='dense1') 
dense2 = tflearn.fully_connected(dense1,256,name='dense2') 
final = tflearn.fully_connected(dense2,10,activation='relu') 
regression = tflearn.regression(final,optimizer='adam', 
           learning_rate=0.001, 
           loss='mean_square') 

model = tflearn.DNN(regression,checkpoint_path='model.tf.ckpt') 

model.fit(X,Y,n_epoch=1, 
      validation_set=(testX,testY), 
      show_metric=True, 
      snapshot_epoch=True, 
      snapshot_step=500, 
      run_id='tflearnDemo') 

pred = model.predict(testX) 

for i in range(len(testX)): 
    print('the original data: ', testY[i], \ 
      'the predict data: ', pred[i]) 
    print("[*]============================") 

ZhQ

+0

これは、私がskflowで遭遇するすべてのトラブルは、最終的に私はtdlearnに切り替えるようになった – user40780

+0

skflowは後方互換性を保つことはできません....多くのチュートリアルは実行できません! – user40780

関連する問題