2017-07-18 100 views
1

我試圖使用TensorFlow在下面的CSV文件讀取CSV文件讀取(「的test.txt」)無法打印值使用TensorFlow

46, 37, 38 
27, 23, 17 

,然後打印出來的內容,但沒有什麼是正在打印。我使用的代碼是

import tensorflow as tf 
import os 

filename_queue = tf.train.string_input_producer(["test.txt"]) 

reader = tf.TextLineReader() 
_, csv_row = reader.read(filename_queue) 
record_defaults = [[0], [0], [0]] 
val1, val2, val3 = tf.decode_csv(csv_row, record_defaults=record_defaults) 
data1 = tf.stack([val1, val2, val3]) 

init = tf.global_variables_initializer() 

with tf.Session() as sess: 
    sess.run(init) 
    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(coord=coord) 
    while True: 
     try: 
      data2 = sess.run([data1]) 
      print(data2) 
     except tf.errors.OutOfRangeError: 
      break 
+0

您的代碼工作正常,我(tensorflow 1.2版)。你如何運行它? – npf

+0

我有版本TensorFlow 1.0.1。我試着從PyCharm 2017.1.2以及Windows 7命令行的py文件運行代碼。 – user1377447

回答

0

我相信你得到不一致的結果,因爲局部變量沒有被初始化。 tf.string_input_producer使用一個epoch計數器局部變量,所以它可能會立即達到epoch極限(當然這裏錯誤信息可以改進)。

試試這個,有一個明確的時代限制(否則它應該無限循環),並與初始化的局部變量:

import tensorflow as tf 

filename_queue = tf.train.string_input_producer(["/tmp/test.txt"], num_epochs=1) 

reader = tf.TextLineReader() 
_, csv_row = reader.read(filename_queue) 
record_defaults = [[0], [0], [0]] 
val1, val2, val3 = tf.decode_csv(csv_row, record_defaults=record_defaults) 
data1 = tf.stack([val1, val2, val3]) 

init = tf.group(tf.global_variables_initializer(), 
       tf.local_variables_initializer()) 

with tf.Session() as sess: 
    sess.run(init) 
    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(coord=coord) 
    while True: 
     try: 
      data2 = sess.run([data1]) 
      print(data2) 
     except tf.errors.OutOfRangeError: 
      break 
+1

解決:我更新到TenserFlow 1.2.1並進行了推薦的更改。非常感謝。 – user1377447