2017-06-26 31 views
1

我试图通过增加列数到21整形数据

from trafficdata import X,Y 

import tflearn 

print(X.shape) #(1054, 21) 
print(Y.shape) #(1054,) 

# Linear Regression graph 
input_ = tflearn.input_data(shape=[None,21]) 
linear = tflearn.single_unit(input_) 
regression = tflearn.regression(linear, optimizer='sgd', loss='mean_square', 
           metric='R2', learning_rate=0.01) 
m = tflearn.DNN(regression) 
m.fit(X, Y, n_epoch=1000, show_metric=True, snapshot_epoch=False) 

print("\nRegression result:") 
print("Y = " + str(m.get_weights(linear.W)) + 
     "*X + " + str(m.get_weights(linear.b))) 

然而扩大the tflearn example for linear regression,tflearn抱怨:

Traceback (most recent call last): 
    File "linearregression.py", line 16, in <module> 
    m.fit(X, Y, n_epoch=1000, show_metric=True, snapshot_epoch=False) 
    File "/usr/local/lib/python3.5/dist-packages/tflearn/models/dnn.py", line 216, in fit 
    callbacks=callbacks) 
    File "/usr/local/lib/python3.5/dist-packages/tflearn/helpers/trainer.py", line 339, in fit 
    show_metric) 
    File "/usr/local/lib/python3.5/dist-packages/tflearn/helpers/trainer.py", line 818, in _train 
    feed_batch) 
    File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 789, in run 
    run_metadata_ptr) 
    File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 975, in _run 
    % (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape()))) 
ValueError: Cannot feed value of shape (64,) for Tensor 'TargetsData/Y:0', which has shape '(21,)' 

我发现的形状( )来自tflearn.regression()的默认批量大小。

是否需要转换标签(Y)?以什么方式?

谢谢!

回答

0

我试图做同样的事情。我做了这些改变,以得到它的工作

# linear = tflearn.single_unit(input_) 
linear = tflearn.fully_connected(input_, 1, activation='linear') 

我的猜测是,随着功能> 1,则不能使用tflearn.single_unit()。您可以添加额外的完全连接图层,但最后一个图层只能有1个神经元,因为Y.shape =(?, 1)