2017-06-26 4 views
1

Je suis en train de développer the tflearn example for linear regression en augmentant le nombre de colonnes à 21.données Mise en forme de régression linéaire avec TFlearn

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))) 

Cependant, tflearn se plaint:

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,)' 

J'ai trouvé la forme (64,) provient de la taille de lot par défaut de tflearn.regression().

Ai-je besoin de transformer les étiquettes (Y)? De quelle façon?

Merci!

Répondre

0

J'ai essayé de faire la même chose. J'ai fait ces changements pour faire fonctionner

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

Je pense que avec des fonctionnalités> 1 vous ne pouvez pas utiliser tflearn.single_unit(). Vous pouvez ajouter des couches fully_connected supplémentaires, mais la dernière ne doit contenir qu'un seul neurone, car Y.shape = (?, 1)