我正在尝试使用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'
任何想法可能是什么原因?
答案 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:
从文件中读取记录的典型管道包含以下阶段:
- 文件名列表
- 可选文件名随机播放
- 可选纪元限制
- 文件名队列
- 文件格式的阅读器
- 阅读器读取记录的解码器
- 可选预处理
- 示例队列
醇>
上面的tf.train.string_input_producer()
调用从第4项创建文件名队列,传入一个简单的文件名列表(第1项)。 tf.TextLineReader()
是上面列表中的第5项。