坑 之 You must feed a value for placeholder tensor ‘label_input‘ with dtype float and shape

TensorFlow:解决占位符与操作节点名称冲突问题
当在TensorFlow中遇到`InvalidArgumentError: NodeDef mentions attr 'T' not in Op<name=Reshape; signature=input:Tensor, shape:tensor<shape: dtype=int32>; attr=T:type; attr=validate_shape:bool,default=true>; NodeDef: img_input = Reshape[T=DT_INT64, Tshape=DT_INT32](img_input, img_input_1)错误时,这通常是因为占位符与图中的操作节点名称重复。解决方法是为占位符更改唯一名称,避免与现有节点名冲突。例如,将pred和gt的名称更改为pred_和gt_,即可解决问题。

首先检查图中的tf.placeholder(),你在sess.run的时候是否feed满足dtype和shape的数据。如果你这两项都没错的话,那么你极有可能犯了重命名的错误,这里指的是使用占位符生成的变量和图中某个图操作节点的名称相同,也会报这个错误,例:

pred = tf.placeholder(tf.int64, shape = None, name='img_input')
gt = tf.placeholder(tf.int64, shape = None, name='label_input')
#print(pred_.name)
#print(gt_.name)
pred = tf.reshape(pred_,[-1])
gt = tf.reshape(gt_,[-1])

这样就导致了代码出错。

解决办法:

pred_ = tf.placeholder(tf.int64, shape = None, name='img_input')
gt_ = tf.placeholder(tf.int64, shape = None, name='label_input')
#print(pred_.name)
#print(gt_.name)
pred = tf.reshape(pred_,[-1])
gt = tf.reshape(gt_,[-1])

将占位符pred和gt变换名称即可。很坑人的一个小问题,很小但是很气人!!!

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值