Tensorflow sinir ağı TypeError: Getirme bağımsız değişkeninin türü geçersiz


11

Kendim topladığım verilerle tensorflow kullanarak basit bir sinir ağı yapıyorum, ancak işbirliği yapmıyor: PI düzeltemediğim veya düzeltmeyi bulamadığım bir hatayla karşılaştı ve yardımınızı çok isterim.

Hata mesajı:

TypeError: 2861.6152'nin 2861.6152 getirme argümanı geçersiz bir türe sahip, bir dize veya Tensör olmalıdır. (Bir float32'yi bir Tensöre veya Operasyona dönüştüremezsiniz.)

Hata, kodumda aşağıdaki satıra başvuruyor:

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

Zaten benim kod aşağıdaki satırları yorum yaparken hata oluşmaz anladım:

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

Yani bir yerde bu çizgilerden biri, tam olarak görünmesini beklediği gibi görünmeyen bir şey alıyor. Zaten (np.array () batch_input ve batch_output kaldırma veya list () ile değiştirerek) denedim ama bu sorunu çözmez. Şu andaki hipotezim, neural_network_model (champion_data) çıktısının bir şekilde yanlış şekil veya tipte olduğu, ancak bunu nasıl test edeceğimi veya bu olduğu takdirde nasıl çözüleceğini bilmiyorum.

Kodun tamamını burada bulabilirsiniz: https://gist.github.com/HasseIona/4bcaf9f95ae828e056d5210a2ea07f88

Düzenleme: Neural_network_model girdi şampiyon verileri, tahmin ve maliyet tüm tansörler olduğunu doğruladı. Sorunun bir şekilde kodun feed_dict = {} bölümünde yer aldığı hipotezini kullanarak sorunu çözmeye çalışıyorum, ancak şu ana kadar hiçbir yere ulaşmıyorum

Yanıtlar:


17

Sorun iki kez 'maliyet' adını kullanmakta yatıyordu, sorun şu şekilde değiştirildi:

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

buna:

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

Bu şekilde 'c' değişkeninin adı artık kodun [optimize edici, maliyet] kısmı ile çakışmaz.


inanılmaz faydalı cevap
lenhhoxung
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.