Нейронна мережа Tensorflow TypeError: Аргумент вилучення має недійсний тип


11

Я створюю просту нейронну мережу за допомогою tensorflow, а дані, які я зібрав сам, однак, це не співпрацює: PI зіткнувся з помилкою, яку я не можу виправити або знайти виправлення, і я би радив вашій допомозі.

Повідомлення про помилку:

TypeError: Аргумент вилучення 2861.6152 з 2861.6152 має недійсний тип, повинен бути рядок або Tensor. (Неможливо перетворити float32 в тензор або операцію.)

Помилка стосується наступного рядка в моєму коді:

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

Я вже зрозумів, що помилка не виникає, коли я коментую наступні рядки в своєму коді:

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

Тож десь один із цих рядків отримує щось таке, що виглядає не так, як він очікує, що це виглядатиме. Я вже спробував очевидне (видалення np.array () з batch_input та batch_output або замінивши його списком ()), але це не вирішує проблему. Моя нинішня гіпотеза полягає в тому, що вихід neural_network_model (mpion_data) якимось чином неправильної форми чи типу, однак я не впевнений, як це перевірити чи як вирішити, якщо це виявиться так.

Повний код можна знайти тут: https://gist.github.com/HasseIona/4bcaf9f95ae828e056d5210a2ea07f88

Редагувати: я переконався, що дані про чемпіони, які вводяться в neural_network_model, прогноз і вартість - це все тензори. Я намагався вирішити проблему, використовуючи гіпотезу, що проблема якимось чином лежить у частині feed_dict = {} частини коду, але поки не дістається ніде

Відповіді:


17

Проблема була у використанні назви "вартість" два рази, проблему було вирішено шляхом зміни цього:

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

до цього:

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

Таким чином, назва змінної 'c' більше не стикається з частиною коду [оптимізатор, вартість].


дивовижно корисна відповідь
lenhhoxung
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.