TensorFlow - decode_csv: Expect 3 fields, but 5 in record 0, if 5 defaults are given: Expect 5 fields, but 3 in record 0
I'm trying to run an example from https://www.tensorflow.org/programmers_guide/reading_data with my custom data that looks like this:
example_data.txt
DESC|manner|How did serfdom develop in and then leave Russia ?
ENTY|cremat|What films featured the character Popeye Doyle ?
DESC|manner|How can I find a list of celebrities ' real names ?
ENTY|animal|What fowl grabs the spotlight after the Chinese Year of the Monkey ?
more...
TensorFlow code:
import numpy as np
import tensorflow as tf
filename_queue = tf.train.string_input_producer(["example_data.txt"])
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
record_defaults = [['hello'], ['hello'], ['hello']]
col1, col2, col3 = tf.decode_csv(
value, record_defaults=record_defaults, field_delim="|")
features = tf.stack([col1, col2, col3])
print(features)
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, col2])
coord.request_stop()
coord.join(threads)
This throws an error:
Expect 3 fields but have 5 in record 0
but if i change:
record_defaults = [['hello'], ['hello'], ['hello'], ['hello'], ['hello']]
col1, col2, col3, col4, col5 = tf.decode_csv(
value, record_defaults=record_defaults, field_delim="|")
This throws an error:
Expect 5 fields but have 3 in record 0
What's happening? is this a bug in TensorFlow?
source to share
When used tf.decode_csv
with, the tf.TextLineReader
mere presence of an empty line at the end of the file produced a similar error "Expect 5 fields, but has 0 in record 0".
Likewise, you can check your data file to see if there are any errors with it, even if it's as simple as an empty string.
source to share