Python 为什么这个TensorFlow片段在馈送时抛出错误? 代码 抛出错误 InvalidArgumentError:必须使用dtype float[{{node placeholder_5}}}=placeholder[dtype=DT_float,shape=,_device=“/job:localhost/replica:0/任务:0/设备:CPU:0”]()]为占位符张量“placeholder_5”提供一个值
在上述代码段中的Python 为什么这个TensorFlow片段在馈送时抛出错误? 代码 抛出错误 InvalidArgumentError:必须使用dtype float[{{node placeholder_5}}}=placeholder[dtype=DT_float,shape=,_device=“/job:localhost/replica:0/任务:0/设备:CPU:0”]()]为占位符张量“placeholder_5”提供一个值,python,numpy,tensorflow,Python,Numpy,Tensorflow,在上述代码段中的sess.run(init)行抛出错误。我正在通过feed_dict馈送浮点型数组,我不确定抛出错误的原因 错误在哪里,原因何在?为什么出现错误: 因为您在一个不干净的图中多次运行同一个代码段(即,您的图有多个网络副本)。 我之所以这样说,是因为错误消息中节点名称末尾的\u 5。TF使用增量索引为图中的所有张量指定一个默认名称,以防已使用名称占位符_5表示在同一个图形中,至少有5个占位符实例没有指定自定义默认名称,根据您的代码,除非在不清理图形的情况下多次调用函数,否则不可能指定
sess.run(init)
行抛出错误。我正在通过feed_dict馈送浮点型数组,我不确定抛出错误的原因
错误在哪里,原因何在?为什么出现错误:
因为您在一个不干净的图中多次运行同一个代码段(即,您的图有多个网络副本)。
我之所以这样说,是因为错误消息中节点名称末尾的\u 5
。TF使用增量索引为图中的所有张量指定一个默认名称,以防已使用名称<代码>占位符_5表示在同一个图形中,至少有5个占位符
实例没有指定自定义默认名称,根据您的代码,除非在不清理图形的情况下多次调用函数,否则不可能指定自定义默认名称
如何修复它:
在干净的图形中运行:将tf.reset\u default\u graph()
放在finalVal=customOps(n)
之前
注意:您的代码有更多的问题(例如,您在主分支中有x
,但是x
是customOps
的局部变量),但是您的错误原因是上面提到的。
在下面,您可以找到解决这两个问题的代码的测试和工作版本
InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder_5' with dtype float [[{{node Placeholder_5}} = Placeholder[dtype=DT_FLOAT, shape=<unknown>, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
它抛出
ValueError:名称“x”看起来像一个(无效)操作名称,而不是张量。张量名称的格式必须为“:”
在这种情况下如何馈送?我曾尝试声明global x
,但这没有帮助。为了测试您的代码,我只是将customOps
更改为return x,finalVal
,然后将其命名为x,finalVal=customOps(n)
,但这样做仍然会引发相同的错误。为什么会这样?请参见更新答案中的代码。这就是我测试我的解决方案的方式,它不会给我任何错误
InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder_5' with dtype float [[{{node Placeholder_5}} = Placeholder[dtype=DT_FLOAT, shape=<unknown>, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
import tensorflow as tf
import numpy as np
def customOps(n):
x = tf.placeholder(tf.float32)
v1 = tf.reduce_sum(x,1)
v2 = tf.reduce_sum(x,0)
v = tf.nn.softmax(tf.concat([v1, v2], 0))
index = np.argmax(v)
if index > n/3:
finalval = tf.norm(v1-v2, ord='euclidean')
else:
finalval = tf.norm(v1+v2, ord='euclidean')
return x, finalval
if __name__ == '__main__':
mat = np.asarray([[0, 1], [1, 0]], dtype = np.float32)
n = mat.shape[0]
tf.reset_default_graph()
x, finalVal = customOps(n)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
outVal = sess.run(finalVal, feed_dict={x:mat})
print(outVal)
sess.close()