我正在使用TensorFlow制作一个简单的神经网络,但我收集了自己的数据,但是,它没有合作:PI遇到了一个错误,我无法修复或找到解决方案,我会很喜欢您的帮助。

错误:

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

因此,这些线之一的某个地方是得到看起来完全不像它期望它看起来的东西。我已经尝试了明显的(从batch_input和batch_output中删除NP.Array()或逐列()),但这无法解决问题。我目前的假设是,neural_network_model(champion_data)的输出某种程度上是形状或类型错误的,但是我不确定如何测试或如何解决该问题。

完整的代码可以在此处找到:https://gist.github.com/hasseiona/4BCAF9F95AE828E056D5210A2EA2EA07F88

编辑:我已经验证了输入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”的名称不再与代码的[优化器,成本]一部分发生冲突。

许可以下: CC-BY-SA归因
scroll top