馈送占位符时的TensorFlow InvalidArgumentError

Posted

技术标签:

【中文标题】馈送占位符时的TensorFlow InvalidArgumentError【英文标题】:TensorFlow InvalidArgumentError when feeding a placeholder 【发布时间】:2018-02-02 15:39:05 【问题描述】:

我有这个占位符:

__y = tf.placeholder(tf.int32)

然后我在下面的代码中使用它:

self.session.run(tf.global_variables_initializer())
self.cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=self.__y, logits=self.super_source))
opt =  tf.train.GradientDescentOptimizer(0.1).minimize(self.cost)
not_important, c = self.session.run(opt, feed_dict=labels: label)

我得到这个错误:

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder' with dtype int32
     [[Node: Placeholder = Placeholder[dtype=DT_INT32, shape=<unknown>, _device="/job:localhost/replica:0/task:0/gpu:0"]()]]

我不明白我得到的错误,所以我无法解决我的问题。有人可以至少解释一下发生了什么吗?

【问题讨论】:

【参考方案1】:

如果我将您的示例改写为:

import tensorflow as tf

__y = tf.placeholder(tf.int32)

with tf.Session() as session:
    session.run(__y)

我遇到了同样的错误:

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder' with dtype int32
     [[Node: Placeholder = Placeholder[dtype=DT_INT32, shape=<unknown>, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

这里的问题是,由于您没有为“__y”提供明确的名称,因此获得了默认名称“占位符”,因此应按如下方式提供:

with tf.Session() as session:
   print(session.run(__y, feed_dict=__y: 123))

【讨论】:

【参考方案2】:

问题很愚蠢,我没有喂__y:

not_important, c = self.session.run([optimizer, self.cost], feed_dict=self.__labels: label, self.__y: 3.0)

【讨论】:

以上是关于馈送占位符时的TensorFlow InvalidArgumentError的主要内容,如果未能解决你的问题,请参考以下文章

当我以 pdf 形式将值插入占位符时,如何为 iText 设置编码?

占位符光标颜色 - Firefox

Tensorflow C++,张量和馈送问题

c语言中条件判断表达式中出现自增自减符时的运算顺序

MyBatis应用开发映射之参数绑定parameterType

TensorFlow 占位符依赖于其他占位符