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中删除,或将其替换为list()),但这并不能解决问题。我目前的假设是Neuro_network_model(champion_data)的输出某种程度上具有错误的形状或类型,但是我不确定如何进行测试或解决(如果确实如此)。

完整的代码可以在这里找到:https : //gist.github.com/HasseIona/4bcaf9f95ae828e056d5210a2ea07f88

编辑:我已经验证了输入到neuro_network_model的冠军数据,预测和成本都是张量。我一直在尝试使用以下假设解决问题:该问题某种程度上在于代码的feed_dict = {}部分,但到目前为止还没有到位

Answers:


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'的名称就不再与代码的[optimizer,cost]部分冲突。


非常有用的答案
lenhhoxung
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.