2017-06-29 3 views
0

Être nouvelle à l'apprentissage de la machine et tflearn/tensorflow J'étais (2?) essayer de suivre le tutoriel quickstart de tflearn (le titanic).Python Tflearn - ValueError: Impossible nourrir la valeur de forme (16, 1) pour Tensor u'InputData/X: 0' , qui a une forme ''

Modifier pour répondre à mes besoins je suis arrivé à ce code:

from __future__ import print_function 

import numpy as np 
import tflearn 

# Load CSV file, indicate that the first column represents labels 
from tflearn.data_utils import load_csv 
data, labels = load_csv('nowcastScaled.csv', target_column=1, n_classes=2) 

# Preprocessing function 
def preprocess(data): 
    return np.array(data, dtype=np.float32) 

# Preprocess data 
data = preprocess(data) 

# Build neural network 
net = tflearn.input_data(shape=[None, 2]) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 2, activation='softmax') 
net = tflearn.regression(net, optimizer='adam', learning_rate=0.001, 
         loss='categorical_crossentropy') 

# Define model 
model = tflearn.DNN(net) 
# Start training (apply gradient descent algorithm) 
model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True) 

Mais je suis arrivé cette erreur:

ValueError: Cannot feed value of shape (16, 1) for Tensor u'InputData/X:0', which has shape '(?, 2)'

Mon fichier csv est composé de deux colonnes, l'une étant un indice (numéro de l'entrée, car il est seulement un test, je me suis limité à 100 entrée) et l'autre étant un score de congestion (ce que je suis en train de prévoir, entre 0 et 200), les deux sont des valeurs numériques.

Je comprends un peu que je suis en train de nourrir une mauvaise valeur (ou au moins quelque chose qu'il ne pas attendre) mais je ne vois pas comment la corriger.

Répondre

0

Ajout

data = np.reshape(data, (-1, 2)) 

corrigé mon problème, mais m'a donné la même erreur, mais avec cette fois-Y alors je l'ai:

labels = np.reshape(labels, (-1, 2)) 

avant la régression et semblent avoir fait le tour. Je ne sais pas si c'est le meilleur ou même une bonne façon de le faire, mais pour l'instant j'ai réussi à eu tour de l'erreur.