Réseau neuronal Tensorflow TypeError: l'argument Fetch a un type non valide


11

Je crée un réseau neuronal simple en utilisant tensorflow, avec les données que j'ai collectées moi-même, cependant, il ne coopère pas: PI a rencontré une erreur que je ne peux pas résoudre ou trouver le correctif et j'aimerais votre aide.

L'errormessage:

TypeError: l'argument Fetch 2861.6152 sur 2861.6152 a un type non valide, doit être une chaîne ou un tenseur. (Impossible de convertir un float32 en un tenseur ou une opération.)

L'erreur se réfère à la ligne suivante dans mon code:

_, cost = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output})

J'ai déjà compris que l'erreur ne se produit pas lorsque je commente les lignes suivantes dans mon code:

prediction = neural_network_model(champion_data)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction, item_data))
optimizer = tf.train.AdamOptimizer().minimize(cost)
_, cost = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output})

Donc, quelque part, l'une de ces lignes obtient quelque chose qui ne ressemble pas exactement à ce qu'il attend. J'ai déjà essayé l'évidence (supprimer le np.array () de batch_input et batch_output ou le remplacer par list ()) mais cela ne résout pas le problème. Mon hypothèse actuelle est que la sortie de neural_network_model (champion_data) est en quelque sorte de la mauvaise forme ou du mauvais type, mais je ne sais pas comment tester cela ou comment le résoudre si cela s'avère être le cas.

Le code complet peut être trouvé ici: https://gist.github.com/HasseIona/4bcaf9f95ae828e056d5210a2ea07f88

Edit: J'ai vérifié que les données champion qui sont entrées dans le neural_network_model, la prédiction et le coût sont tous des tenseurs. J'ai essayé de résoudre le problème en utilisant l'hypothèse que le problème se situe d'une manière ou d'une autre dans la partie feed_dict = {} du code, mais que je n'arrive nulle part jusqu'à présent

Réponses:


17

Le problème résidait dans l'utilisation du nom «coût» à deux reprises, le problème a été résolu en changeant ceci:

_, cost = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output})

pour ça:

_, c = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output})

De cette façon, le nom de la variable «c» ne se heurte plus à la partie [optimizer, cost] du code.


réponse incroyablement utile
lenhhoxung
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.