2016-09-15 80 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,所以我搜索了具有相似礦是如何工作的代碼,但是代碼的輸出是一個。

在我的模型中,輸入是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。我無法修復它。

相關問題