2017-06-16 2 views
0

Je suis nouveau à TFLearn et essaie de créer un simple programme d'addition. L'entrée est 2 valeurs et la sortie est une valeur, qui est la somme des entrées. L'erreur que j'obtiens est "ValueError: Cannot feed value of shape (100,) for Tensor 'TargetsData/Y:0', which has shape '(?, 1)" Il semble que la taille de la forme/du lot corresponde au code, donc je ne sais pas si c'est la façon dont le train/les données de test est généré, ou si le code de création NN est erroné. Voici le code:TFLearn ne peut pas alimenter la valeur de la forme (ValueError) en essayant de créer un simple modèle d'addition

import numpy as np 
import tflearn 


def generate_answers(data): 
    answers = [] 
    for row in data: 
     answers.append(sum(row)) 
    return np.array(answers).astype(float) 

train_data_count = 1000 
test_data_count = 100 

net = tflearn.input_data(shape=(None, 2)) 
net = tflearn.fully_connected(net, 100) 
net = tflearn.fully_connected(net, 100) 
net = tflearn.fully_connected(net, 1, activation="linear") 
net = tflearn.regression(net, optimizer='sgd', loss='mean_square', metric='R2', learning_rate=0.1) 
model = tflearn.DNN(net) 

train_data = np.random.randint(500, size=(train_data_count, 2)).astype(float) 
train_answers = generate_answers(train_data) 
print(train_data.shape) 
print(train_answers.shape) 
model.fit(train_data, train_answers, n_epoch=100, batch_size=100, show_metric=True) 

test_data = np.random.randint(500, size=(test_data_count, 2)).astype(float) 
test_answers = generate_answers(test_data) 
predictions = model.predict(test_data) 

count = 0 
for i in range(len(predictions)): 
    if test_answers[i] == predictions[i]: 
     count += 1 
print(count, "/", len(predictions)) 

Toute aide est appréciée.

Répondre

0

Il s'avère que l'ajout de net = tflearn.reshape(net, [-1]) avant la régression a permis de résoudre ce problème. Le programme a encore quelques bugs, mais au moins cela est résolu.