AttributeError:'str'对象没有属性'queue_ref'

时间:2017-12-02 14:27:42

标签: python tensorflow

我正在尝试使用Tensorflow读取CSV文件:

import tensorflow as tf

reader = tf.TextLineReader()
key, value = reader.read("../input/training.csv")

但是,我在代码的最后一行得到了这个问题:

/opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/io_ops.py in read(self, queue, name)
    191       queue_ref = queue
    192     else:
--> 193       queue_ref = queue.queue_ref
    194     if self._reader_ref.dtype == dtypes.resource:
    195       return gen_io_ops._reader_read_v2(self._reader_ref, queue_ref, name=name)

AttributeError: 'str' object has no attribute 'queue_ref'

任何想法可能是什么原因?

1 个答案:

答案 0 :(得分:1)

您需要为文件创建队列

filename_queue = tf.train.string_input_producer(["../input/training.csv"])

reader = tf.TextLineReader()
key, value = reader.read(filename_queue)

来自tf.TextLineReader().read() documentation

read(
      queue,
      name=None
  )
     

[...]

     
      
  • queue :队列或可变字符串Tensor表示队列句柄,带有字符串工作项。
  •   

以及API指南的Reading from files section

  

从文件中读取记录的典型管道包含以下阶段:

     
      
  1. 文件名列表
  2.   
  3. 可选文件名随机播放
  4.   
  5. 可选纪元限制
  6.   
  7. 文件名队列
  8.   
  9. 文件格式的阅读器
  10.   
  11. 阅读器读取记录的解码器
  12.   
  13. 可选预处理
  14.   
  15. 示例队列
  16.   

上面的tf.train.string_input_producer()调用从第4项创建文件名队列,传入一个简单的文件名列表(第1项)。 tf.TextLineReader()是上面列表中的第5项。