2016-09-15 4 views
0

テンソルを使って2つの出力ノードを持つ回帰モデルを作成したいと思います。回帰モデルを構築できるコードを1つの出力ノードで検索します。直列出力のテンソルフローを使用して回帰を行う方法は?

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/skflow/boston.py

from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 
from sklearn import cross_validation 
from sklearn import metrics 
from sklearn import preprocessing 
import tensorflow as tf 
from tensorflow.contrib import learn 


def main(unused_argv): 
    # Load dataset 
    boston = learn.datasets.load_dataset('boston') 
    x, y = boston.data, boston.target 

    # Split dataset into train/test 
    x_train, x_test, y_train, y_test = cross_validation.train_test_split(
     x, y, test_size=0.2, random_state=42) 

    # Scale data (training set) to 0 mean and unit standard deviation. 
    scaler = preprocessing.StandardScaler() 
    x_train = scaler.fit_transform(x_train) 

    # Build 2 layer fully connected DNN with 10, 10 units respectively. 
    feature_columns = learn.infer_real_valued_columns_from_input(x_train) 
    regressor = learn.DNNRegressor(
     feature_columns=feature_columns, hidden_units=[10, 10]) 

    # Fit 
    regressor.fit(x_train, y_train, steps=5000, batch_size=1) 

    # Predict and score 
    y_predicted = list(
     regressor.predict(scaler.transform(x_test), as_iterable=True)) 
    score = metrics.mean_squared_error(y_predicted, y_test) 

    print('MSE: {0:f}'.format(score)) 


if __name__ == '__main__': 
    tf.app.run() 

私はtensorflowに新しいですので、私は私がどのように機能するかに類似しているが、コードの出力が1つのコードで検索。

私のモデルでは、入力はN * 1000で、出力はN * 2です。私は回帰のための効果的かつ効率的なコードがあるのだろうか。いくつかの例を教えてください。

+0

あなたの質問が何であるかははっきりしません。もっと具体的になりますか? – miraculixx

答えて

0

実は、私はDNNRegressorを使用して実行可能コードを見つける:*

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) 
Y = np.zeros([N,2]) 
Y[:,0] = X.squeeze() 
Y[:,1] = X.squeeze()**2 

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[:,0],steps=500) 

をしかし、このコードはY_trainの形状は、N * 1で、かつY_trainの形状がNである場合、それは失敗した場合にのみ動作します2。

しかし、回帰モデルを作成したいと思います。入力はN * 1000、出力はN * 2です。私はそれを修正することはできません。

関連する問題