Tensorflow 신경망 TypeError : Fetch 인수에 잘못된 유형이 있습니다.


11

나는 tensorflow를 사용하여 간단한 신경망을 만들고 있는데, 내가 수집 한 데이터로 협력하지는 않습니다.

오류 메시지 :

TypeError : Fetch 인수 2861.6152 중 2861.6152에 유효하지 않은 type이 (가) 문자열 또는 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})

따라서이 라인 중 하나는 예상 한 것과 다르게 보이지 않는 것을 얻는 것입니다. 나는 이미 명백한 시도 (batch_input에서 np.array () 제거 및 batch_output 또는 list ()로 대체)를 시도했지만 문제가 해결되지 않습니다. 내 현재 가설은 neural_network_model (champion_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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.