Tensorflow neural network TypeError: Mengambil argumen memiliki tipe yang tidak valid

11

Saya membuat jaringan saraf sederhana menggunakan tensorflow, dengan data yang saya kumpulkan sendiri, namun, itu tidak bekerja sama: PI telah mengalami kesalahan yang tidak dapat saya perbaiki atau temukan untuk memperbaikinya dan saya akan sangat membantu Anda.

Errormessage:

TypeError: Ambil argumen 2861.6152 dari 2861.6152 memiliki jenis tidak valid, harus berupa string atau Tensor. (Tidak dapat mengubah float32 menjadi Tensor atau Operasi.)

Kesalahan mengacu pada baris berikut dalam kode saya:

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

Saya sudah menemukan bahwa kesalahan tidak terjadi ketika saya mengomentari baris berikut dalam kode saya:

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

Jadi di suatu tempat salah satu dari garis-garis ini mendapatkan sesuatu yang tidak terlihat persis seperti yang diharapkannya terlihat. Saya sudah mencoba yang jelas (menghapus np.array () dari batch_input dan batch_output atau menggantinya dengan daftar ()) tetapi itu tidak menyelesaikan masalah. Hipotesis saya saat ini adalah bahwa output dari neural_network_model (champion_data) entah bagaimana dari bentuk atau tipe yang salah, namun saya tidak yakin bagaimana mengujinya atau bagaimana menyelesaikannya jika ternyata memang demikian.

Kode lengkap dapat ditemukan di sini: https://gist.github.com/HasseIona/4bcaf9f95ae828e056d5210a2ea07f88

Sunting: Saya telah memverifikasi bahwa data juara yang dimasukkan ke dalam neural_network_model, prediksi dan biayanya semuanya tensor. Saya telah mencoba untuk menyelesaikan masalah menggunakan hipotesis bahwa masalahnya terletak pada bagian feed_dict = {} dari kode, tetapi tidak sampai sejauh ini

Hasse Iona
sumber

Jawaban:

17

Masalahnya terletak pada penggunaan nama 'biaya' pada dua kesempatan, masalahnya diselesaikan dengan mengubah ini:

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

untuk ini:

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

Dengan cara ini nama variabel 'c' tidak berbenturan lagi dengan bagian [optimizer, cost] dari kode.

Hasse Iona
sumber
jawaban yang sangat berguna
lenhhoxung