我目前正在做一个研究项目,在这个项目中,我必须在一些时代之后附加我的训练集,并在评估后从测试集中删除一些样本。目前,我无法访问tfrecord文件中的记录(放置在特定索引下)以删除或追加记录。因为tfrecords提供非常快的训练,所以我避免使用发电机。有建议以这种方式访问tfrecord文件吗?
发布于 2019-08-19 06:30:23
我得把我的训练集附加在几个时代之后
您可以使用repeat(n)为n时代重复数据集,然后使用concatenate(new_dataset)来附加一些额外的数据。因此,为了在15个时代之后追加新的数据,我们可以这样做:
dataset = tf.data.TFRecordDataset('filepath.tfrecord')
new_data = tf.data.TFRecordDataset('filepath_of_records_to_append.tfrecord') # or any other dataset from generator or whatever!
dataset = dataset.repeat(15).concatenate(new_data)并从测试集中删除一些样本。
您不能使用tf.data API轻松地从原始tfrecord文件中删除(实际上您必须编写一个新的tfrecord文件,其中省略了这些记录),所以您可能会发现只构造一个tf.data数据集并忽略或跳过您想要省略的记录是有用的吗?这要简单得多,可以使用take()和skip()来完成。
因此,例如,如果我想跳过索引4、7、8、9和10的记录,我可以这样做:
dataset = tf.data.TFRecordDataset('filepath.tfrecord')
dataset = dataset.take(4).skip(1).take(2).skip(4)https://stackoverflow.com/questions/57550028
复制相似问题