Pregunta

Estoy haciendo una red neuronal simple que usa TensorFlow, con datos que recopilé, sin embargo, no está cooperando: Pi se ha encontrado con un error que no puedo arreglar o encontrar la solución y me encantaría su ayuda.

El error de error:

TypeError: el argumento de Fetch 2861.6152 de 2861.6152 tiene un tipo no válido, debe ser una cadena o tensor. (No puede convertir un Float32 en un tensor u operación).

El error se refiere a la siguiente línea en mi código:

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

Ya he descubierto que el error no ocurre cuando comento las siguientes líneas en mi código:

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

Entonces, en algún lugar una de estas líneas está obteniendo algo que no se vea exactamente como él espera que se vea. Ya he probado lo obvio (eliminar el np.array () de Batch_input y Batch_output o reemplazarlo por List ()) pero eso no resuelve el problema. Mi hipótesis actual es que la salida de Neural_Network_Model (Champion_Data) es de alguna manera de la forma o tipo incorrecto, sin embargo, no estoy seguro de cómo probar eso o cómo resolverlo si ese resulta ser el caso.

El código completo se puede encontrar aquí:https://gist.github.com/hasseiona/4bcaf9f95ae828e056d5210a2ea07f88

EDITAR: He verificado que los datos del campeón que se ingresan en el neural_network_model, la predicción y el costo son todos tensores. He estado tratando de resolver el problema usando la hipótesis de que el problema de alguna manera se encuentra en la parte de Feed_dict = {} del código, pero no llegar hasta ahora hasta ahora

¿Fue útil?

Solución

El problema radica en el uso del nombre 'Costo' en dos ocasiones, el problema se resolvió cambiando esto:

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

a esto:

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

De esta manera, el nombre de la variable 'C' ya no choca con la parte [optimizador, costo] del código.

Licenciado bajo: CC-BY-SA con atribución
scroll top