Tensorflow 神经网络 TypeError:Fetch 参数的类型无效

数据挖掘 机器学习 Python 神经网络 张量流
2021-09-19 04:05:22

我正在使用 tensorflow 制作一个简单的神经网络,并使用我自己收集的数据,但是,它不合作:PI 遇到了一个我无法修复或找到修复的错误,我很想得到你的帮助。

错误信息:

TypeError: Fetch argument 2861.6152 of 2861.6152 has invalid type <class 'numpy.float32'>, must be a string or Tensor. (Can not convert a float32 into a Tensor or Operation.)

该错误是指我的代码中的以下行:

_, 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)形状或类型不正确,但是我不确定如何测试它或如果结果是这种情况如何解决它。

完整的代码可以在这里找到。

编辑:我已经验证了输入的冠军数据、neural_network_model预测和成本都是张量。我一直在尝试使用问题以某种方式feed_dict = {}存在于代码部分的假设来解决问题,但到目前为止还没有得到任何结果

1个回答

问题在于两次使用名称“成本”,通过更改此问题解决了问题:

_, 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] 部分发生冲突。