为什么tf.placeholder无法正常运行?

时间:2017-03-17 21:08:52

标签: python tensorflow

我做了如下,但错误的信息是: “ InvalidArgumentError(请参见上面的回溯):您必须使用dtype字符串为占位符张量”占位符“提供值      [[Node:Placeholder = Placeholderdtype = DT_STRING,shape = [],_ device =“/ job:localhost / replica:0 / task:0 / cpu:0”]]

pattern = tf.placeholder(tf.string, shape=[None])

filenames = tf.train.match_filenames_once(pattern[0])
count_num_files = tf.size(filenames)
filename_queue = tf.train.string_input_producer(filenames)
image_reader = tf.WholeFileReader()
image_name, image_file = image_reader.read(filename_queue)

with tf.Session() as sess:
    tf.global_variables_initializer().run()
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)

    feed_dict = {pattern: ['/home/test/images/*.jpg']} 
    out = sess.run(image_name, feed_dict)

    coord.request_stop()
    coord.join(threads)

我认为每一步都是正确的。但它确实不起作用,正如我所说。 怎么了?我真的需要你的帮助,这让我困惑了很长时间。 非常感谢你!

增刊 //////////////////////////// 谢谢你下面的朋友给出答案。 另一个问题是如何更改初始占位符值。 看看下面的代码,首先我将placehoder y作为空白'',然后我将其更改为字符串模式,但事实上,y总是空白'',没有变化,如何将y变为另一个值?非常感谢

pattern = '/home/lyp/MyTensorflowData/TestProject/images/*.jpg'
y = tf.placeholder(tf.string)
filenames = tf.train.match_filenames_once(y)
count_num_files = tf.size(filenames)

init_op = tf.global_variables_initializer()

with tf.Session() as sess:
  sess.run(init_op, feed_dict={y: ''})
  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(coord=coord)

  for epoch in range(3):
    print(sess.run(count_num_files, feed_dict={y: pattern}))


coord.request_stop()
coord.join(threads)

1 个答案:

答案 0 :(得分:0)

我认为问题在于如何初始化变量。我其实并不完全确定原因,但这对我有用(v0.1.0):

tf.global_variables_initializes().run(feed_dict)

似乎要初始化变量,您需要传入feed_dict