Rete neurale Tensorflow TypeError: l'argomento Fetch ha un tipo non valido


11

Sto creando una semplice rete neurale usando tensorflow, con i dati che ho raccolto da me stesso, tuttavia, non sta collaborando: PI ha riscontrato un errore che non posso risolvere o trovare la soluzione e mi piacerebbe il tuo aiuto.

L'errore:

TypeError: l'argomento Fetch 2861.6152 di 2861.6152 ha un tipo non valido, deve essere una stringa o un tensore. (Impossibile convertire un float32 in un tensore o operazione.)

L'errore si riferisce alla seguente riga nel mio codice:

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

Ho già capito che l'errore non si verifica quando commento le seguenti righe nel mio codice:

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})

Quindi da qualche parte una di queste linee sta ottenendo qualcosa che non sembra esattamente come si aspetta che appaia. Ho già provato l'ovvio (rimuovendo np.array () da batch_input e batch_output o sostituendolo con list ()) ma questo non risolve il problema. La mia attuale ipotesi è che l'output di neural_network_model (champion_data) abbia in qualche modo la forma o il tipo sbagliati, tuttavia non sono sicuro di come testarlo o come risolverlo se risulta essere il caso.

Il codice completo è disponibile qui: https://gist.github.com/HasseIona/4bcaf9f95ae828e056d5210a2ea07f88

Modifica: ho verificato che i dati del campione immessi nel modello neural_network_model, la previsione e il costo sono tutti tensori. Ho cercato di risolvere il problema usando l'ipotesi che il problema si trovi in ​​qualche modo nella parte feed_dict = {} del codice, ma finora non sono arrivato da nessuna parte

Risposte:


17

Il problema risiedeva nell'usare il nome "cost" in due occasioni, il problema è stato risolto cambiando questo:

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

a questa:

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

In questo modo il nome della variabile 'c' non si scontrerà più con la parte [ottimizzatore, costo] del codice.


risposta incredibilmente utile
lenhhoxung
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.