在tensorflow中读取LZO压缩的csv文件

时间:2018-04-30 13:10:46

标签: python tensorflow lzo

我有一系列以LZO格式压缩的csv文件,我想导入TensorFlow。但是,如果我尝试读取它,因为我会读取未压缩的文件,即使用

def parse_csv(line):
    columns = tf.decode_csv(line, record_defaults=DEFAULTS, field_delim="\t", use_quote_delim=False)  # take a line at a time
    features = dict(zip(COLUMNS, columns))  # create a dictionary out of the features
    labels = tf.to_int32(features.pop('label'))  # define the label as an integer
    return features, labels

data_files = glob.glob("my/folder/*")
dataset = tf.data.TextLineDataset(data_files)
dataset = dataset.map(parse_csv)

之前定义了DEFAULTS和COLUMNS,我得到了错误

tensorflow.python.framework.errors_impl.InvalidArgumentError: Expect 20 fields but have 1 in record 0

为了规避它,我尝试了定义tf.WholeFileReader并使用tf.read_file函数,然后将其输出传递给decompress包中的python-lzo函数,但无济于事。我怀疑那里有很多错误:至少有一个我使用read_file函数的方式,因为我不确定我是否很好地导航了TF数据结构,而decompress中有一个,因为我没有我真的很了解LZO是如何运作的。

data_files = glob.glob("my/folder/*")
file_queue = tf.train.string_input_producer(data_files)
value = tf.read_file(file_queue.dequeue())
value = tf.map_fn(lzo.decompress, value)
dataset = tf.map_fn(parse_csv, value)

我收到以下错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: slice index 0 of dimension 0 out of bounds. for 'map/strided_slice' (op: 'StridedSlice') with input shapes: [0], [1], [1], [1] and with computed input tensors: input[1] = <0>, input[2] = <1>, input[3] = <1>.

你能指出我的错误吗?我该如何解决?

0 个答案:

没有答案