Datos de conformación para regresión lineal con TFlearn

Estoy tratando de expandir el ejemplo de tflearn para la regresión lineal aumentando el número de columnas a 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))) 

Sin embargo, tflearn se queja:

 Traceback (most recent call last): File "linearregression.py", line 16, in  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,)' 

Encontré que la forma (64,) proviene del tamaño de lote predeterminado de tflearn.regression ().

¿Necesito transformar las tags (Y)? ¿En qué manera?

¡Gracias!

    Traté de hacer lo mismo. Hice estos cambios para que funcione.

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

    Mi conjetura es que con características> 1 no puede usar tflearn.single_unit() . Puede agregar capas adicionales totalmente conectadas, pero la última debe tener solo 1 neurona porque Y.shape = (?, 1)

    Tienes 21 características. Por lo tanto, no puede usar linear = tflearn.single_unit(input_)

    En su lugar, intente esto: linear = tflearn.fully_connected(input_, 21, activation='linear')

    El error que recibe es porque sus tags, es decir, Y tiene una forma de (1054,). Primero hay que preprocesarlo.

    Intente usar el código que se proporciona a continuación antes de # linear regression graph :

    Y = np.expand_dims(Y,-1)

    Ahora, antes de regression = tflearn.regression(linear, optimizer='sgd', loss='mean_square',metric='R2', learning_rate=0.01) , ingrese el siguiente código:

    linear = tflearn.fully_connected(linear, 1, activation='linear')