我有一个很大的csv文件,其单元格数据类型为text,int和float。例如:
joe@example.com | some text | 1 | 1.1
joe2@example.com | some other text | 2 | 1.2
...
我正在按照建议将其转换为tfrecord格式,以减小数据大小并提高读取速度。
csv文件中的每一行都被解析并转换为tf.Example,然后将其序列化为tfrecord。该行中的每个字段都将转换为tf.Feature。
但是,生成的tfrecord文件的大小约为原始csv文件的两倍,而不是承诺的较小文件。
考虑tf.Feature的定义方式,每个功能条目都将键和值作为结构的一部分,基本上,我们为每个数据单元重复键(也称为列名),这是非常多余的。
我的问题是这是否是构建tf.example和tfrecord的预期方法,并且在这里不希望减小大小。
我注意到的是每一个tf.Feature的值是一个List,而我总是只将一个值放入List。我应该将多行csv文件批处理到一个示例实例中,并用多个值填充列表,以减少列名重复的次数。