TensorFlow / TFLearn: ValueError: Impossible d'introduire une valeur de forme (64,) pour Tenseur u'target / Y: 0 ', qui a la forme' (?, 10) '
J'ai essayé d'effectuer la régression à l'aide de tflearn et mon propre jeu de données.
À l'aide de tflearn j'ai essayé de mettre en œuvre une convolution réseau basé sur une exemple à l'aide de la MNIST dataset. Au lieu d'utiliser le MNIST dataset j'ai essayé de remplacer la formation et des données de test avec mon propre. Mes données sont lues à partir d'un fichier csv et est d'une forme différente pour les données MNIST. J'ai 255 caractéristiques qui représentent 15*15 grille et une valeur cible. Dans l'exemple, j'ai remplacé les lignes 24 à 30 (et inclus import numpy comme np):
#read in train and test csv's where there are 255 features (15*15) and a target
csvTrain = np.genfromtxt('train.csv', delimiter=",")
X = np.array(csvTrain[:, :225]) #225, 15
Y = csvTrain[:,225]
csvTest = np.genfromtxt('test.csv', delimiter=",")
testX = np.array(csvTest[:, :225])
testY = csvTest[:,225]
#reshape features for each instance in to 15*15, targets are just a single number
X = X.reshape([-1,15,15,1])
testX = testX.reshape([-1,15,15,1])
## Building convolutional network
network = input_data(shape=[None, 15, 15, 1], name='input')
J'obtiens l'erreur suivante:
ValueError: Ne peuvent pas se nourrir de la valeur de la forme (64) pour Tenseur u'target/Y:0',
qui a la forme '(?, 10)'
J'ai essayé différentes combinaisons et ont vu un question similaire dans stackoverflow mais n'ont pas eu de succès. L'exemple de cette page ne fonctionne pas pour moi et lève une erreur similaire et je ne comprends pas la réponse ou ceux fournis par des questions similaires.
Comment puis-je utiliser mes propres données?
source d'informationauteur user728785
Vous devez vous connecter pour publier un commentaire.
Réponse courte
Dans la ligne 41 de la MNIST exemplevous devez également modifier la taille de sortie de 10 à 1 en
network = fully_connected(network, 10, activation='softmax')
ànetwork = fully_connected(network, 1, activation='linear')
. Notez que vous pouvez supprimer le dernier softmax.En regardant ton code, il semble que vous avez une valeur cible
Y
ce qui signifie l'utilisation de la L2 perte avecmean_square
(vous trouverez ici toutes les pertes disponible):Aussi, remodeler Y et Y_test avoir la forme (batch_size, 1).
Réponse longue: Comment analyser l'erreur et de trouver le bug
Ici est de savoir comment analyser l'erreur:
Cannot feed value ... for Tensor 'target/Y'
ce qui signifie qu'il provient de la feed_dict argument Y.of shape (64,)
alors que le réseau s'attendre à une forme(?, 10)
.fully_connected(network, 10, activation='softmax')
est au retour d'une sortie de taille 10fully_connected(network, 1, activation='linear')
En fin de compte, il n'était pas un bug, mais un mauvais modèle d'architecture.