我有一个csv文件,我很确定没有" in,我试图使用以下代码阅读:
filename_queue = tf.train.string_input_producer(["../data/train_no_empty_rows.txt"])
# train_no_empty_rows
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
record_defaults = [tf.constant(['p'], dtype=tf.string), # Column 0
tf.constant(['p'], dtype=tf.string), # Column 1
tf.constant(['p'], dtype=tf.string)] # Column 2
col1, col2, col3 = tf.decode_csv(
value, record_defaults=record_defaults,field_delim=" ")
features = tf.pack([col2, col3])
with tf.Session() as sess:
# Start populating the filename queue.
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
for i in range(1200):
# Retrieve a single instance:
example, label = sess.run([features, col1])
coord.request_stop()
coord.join(threads)
但是当我运行它时,我收到了这个错误:
InvalidArgumentError: Quote inside a string has to be escaped by another quote
[[Node: DecodeCSV_25 = DecodeCSV[OUT_TYPE=[DT_STRING, DT_STRING, DT_STRING],
field_delim=" ",
_device="/job:localhost/replica:0/task:0/cpu:0"]
(ReaderRead_25:1, Const_75, Const_76, Const_77)]]
我认为我可以调试,但我无法找到它引用csv文件中哪些条目存在问题的位置。它是一个相当大的csv文件,前100个条目没有这个问题。正如我所说,我找不到任何"和'似乎在测试中解析得很好。有什么方法可以找到麻烦的条目吗?
谢谢!
答案 0 :(得分:4)
查找麻烦条目的一种方法是在tf.Print()
之前添加tf.decode_csv()
运算符:
# ...
# Prints out the contents of `key` and `value` every time the op executes.
value = tf.Print(value, [key, value])
col1, col2, col3 = tf.decode_csv(
value, record_defaults=record_defaults, field_delim=" ")
# ...
失败前最后记录的条目应指明哪个输入无效。希望在进行此修改时,根本原因会变得明显。