我将使用 this code 写入 TFRecord 文件:
writer = tf.python_io.TFRecordWriter(output_filename)
print("Creating TFRecords file at {}...".format(output_filename))
for i, row in enumerate(create_csv_iter(input_filename)):
x = example_fn(row)
writer.write(x.SerializeToString())
writer.close()
问题是这个过程非常慢,以至于即使在几天内写一个大数据集也是不可行的!
它只是一个序列化到磁盘的写入器。怎么这么慢?!另一个问题是输出文件的大小比原始文件大10倍!
你知道有什么方法可以加快 TFRecordWriter 的进程并压缩结果吗?
最佳答案
我不知道速度问题,但你可以事后压缩 - TFRecordReader
支持 GZIP 和 ZLIB 压缩,例如
reader = tf.TFRecordReader(
options=tf.python_io.TFRecordOptions(
compression_type=tf.python_io.TFRecordCompressionType.ZLIB
)
)
_, tfrecord = reader.read(file_queue)
# etc.
查看更多 here .解压需要一些时间,但如果您使用 TF 批处理系统,您只会在开始时真正注意到它(因此 CPU 内核可以在 GPU 工作时解压并填充您的队列等)。
关于tensorflow - 为什么 'tf.python_io.TFRecordWriter' 在 TensorFlow 中如此缓慢和存储消耗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39235303/