Tensorflow - 编辑 TFRecord
Tensorflow - Edit a TFRecord
问题:有没有办法附加现有的 TFRecord?
注意:.TFRecord 是由我自己的脚本创建的(不是我在网上找到的.tfrecord),所以我可以完全控制它的内容。
无法像这样追加到现有的记录文件,或者至少不能通过 TensorFlow 提供的功能追加。记录文件在创建时由 PyRecordWriter
, which calls the function NewWriteableFile
在 C++ 级别编写,删除具有给定名称的任何现有文件以创建一个新文件。但是,可以创建一个新的记录文件,其中包含另一个文件的内容,然后是新记录。
对于 TensorFlow 1.x,您可以这样做:
import tensorflow as tf
def append_records_v1(in_file, new_records, out_file):
with tf.io.TFRecordWriter(out_file) as writer:
with tf.Graph().as_default(), tf.Session():
ds = tf.data.TFRecordDataset([in_file])
rec = ds.make_one_shot_iterator().get_next()
while True:
try:
writer.write(rec.eval())
except tf.errors.OutOfRangeError: break
for new_rec in new_records:
writer.write(new_rec)
在 TensorFlow 2.x(急切执行)中,您可以这样做:
import tensorflow as tf
def append_records_v2(in_file, new_records, out_file):
with tf.io.TFRecordWriter(out_file) as writer:
ds = tf.data.TFRecordDataset([in_file])
for rec in ds:
writer.write(rec.numpy())
for new_rec in new_records:
writer.write(new_rec)
问题:有没有办法附加现有的 TFRecord?
注意:.TFRecord 是由我自己的脚本创建的(不是我在网上找到的.tfrecord),所以我可以完全控制它的内容。
无法像这样追加到现有的记录文件,或者至少不能通过 TensorFlow 提供的功能追加。记录文件在创建时由 PyRecordWriter
, which calls the function NewWriteableFile
在 C++ 级别编写,删除具有给定名称的任何现有文件以创建一个新文件。但是,可以创建一个新的记录文件,其中包含另一个文件的内容,然后是新记录。
对于 TensorFlow 1.x,您可以这样做:
import tensorflow as tf
def append_records_v1(in_file, new_records, out_file):
with tf.io.TFRecordWriter(out_file) as writer:
with tf.Graph().as_default(), tf.Session():
ds = tf.data.TFRecordDataset([in_file])
rec = ds.make_one_shot_iterator().get_next()
while True:
try:
writer.write(rec.eval())
except tf.errors.OutOfRangeError: break
for new_rec in new_records:
writer.write(new_rec)
在 TensorFlow 2.x(急切执行)中,您可以这样做:
import tensorflow as tf
def append_records_v2(in_file, new_records, out_file):
with tf.io.TFRecordWriter(out_file) as writer:
ds = tf.data.TFRecordDataset([in_file])
for rec in ds:
writer.write(rec.numpy())
for new_rec in new_records:
writer.write(new_rec)