2017-03-17 351 views
0

我做了如下,但錯誤信息是: 「InvalidArgumentError(見上文回溯):你必須養活佔位符張量‘佔位’的值與D型字符串 [節點:佔位符= Placeholderdtype = DT_STRING,形狀= [],_device = 「/職業:本地主機/副本:0 /任務:0/CPU:0」]]爲什麼tf.placeholder無法正常工作?

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) 

我覺得每一步都是corret。但它真的不像我所說的那樣工作。 有什麼不對?我真的需要你的幫助,這讓我很困惑。 非常感謝喲!

Suppl。 //////////////////////////// 謝謝下面的朋友給出答案。 另一個問題是如何更改初始佔位符值。 看下面的代碼,首先我init的placehoder y作爲空白'',然後我改變它爲字符串模式,但實際上,y總是空白'',沒有改變,如何chagne 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) 
+0

顯示我們追溯。 – user2357112

回答

0

我認爲問題在於如何初始化變量。實際上,我完全不知道爲什麼,但這個工作對我來說(v0.1.0):

tf.global_variables_initializes().run(feed_dict)

看來,初始化變量,你需要在feed_dict通過

+0

非常感謝。它在這裏工作。但如果我想在循環中更改feed_dict值,它看起來有點難。有什麼好主意?' – lemontree

相關問題