Tensorflow Нейронная сеть Typeerror: Argemer имеет недопустимый тип
-
16-10-2019 - |
Вопрос
Я делаю простую нейронную сеть, используя TensorFlow, с данными, которые я собирал сам, однако это не сотрудничает: PI столкнулся с ошибкой, которую я не могу исправить или найти исправление, и мне бы понравилась ваша помощь.
Errormessage:
TypeError: аргумент Fetch 2861.6152 из 2861.6152 имеет недопустимый тип, должен быть строка или тензор. (Не может преобразовать 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 или заменить его на list ()), но это не решает проблему. Моя текущая гипотеза заключается в том, что вывод Neural_network_model (Champion_Data) каким -то образом является неправильной формой или типом, однако я не уверен, как проверить это или как это решить, если это оказывается.
Полный код можно найти здесь:https://gist.github.com/hasseiona/4bcaf9f95ae828e056d5210a2ea07f88
РЕДАКТИРОВАТЬ: Я подтвердил, что данные чемпиона, которые вводятся в Neural_network_model, прогноз и стоимость - все тензоры. Я пытался решить проблему, используя гипотезу о том, что проблема каким -то образом заключается в feed_dict = {} часть кода, но до сих пор никуда не добраться до
Решение
Проблема заключалась в использовании названия «стоимость» дважды, проблема была решена путем изменения этого:
_, 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' больше не сталкивается с [оптимизатором, стоимостью] частью кода.