设置
我有几十个中等大小的文件(~1G),每个文件包含给定类的每一行一个样本。在每个文件中,样本都是非随机的,即A文件的I‘样本与B文件的I’样本有一定的相关性,因为数据是每个类的某个轴上的样本(细节并不重要)。
问题
读取和处理内存中的所有样本不是一种选择,因为(1)可能多达数百个文件;(2)每个样本的内存占用在预处理后显着增加(例如,由于较大的一热编码向量)。
我的目标是有效地从磁盘读取示例(或批),并将其输入到我的tf.keras模型中。此外,我希望在每个时代之后,将样本(或批)输入到网络中的顺序进行洗牌。
我如何以合理的效率存档这个文件,也就是说,我的GPU在训练期间不会空闲?
发布于 2020-05-13 05:45:13
这里有一个建议,假设您正在读取TFRecord文件。具体参数取决于每个示例的大小和可用资源:
import tensorflow as tf
ds = (tf.data.Dataset.list_files('data_dir/*.tfrecord')
.cache()
.repeat()
.shuffle(1_000)
.interleave(tf.data.TFRecordDataset, block_length=100,
# Optional
num_parallel_calls=tf.data.experimental.AUTOTUNE)
.shuffle(10_000)
.map(record_parse_function)
.batch(32)
.prefetch(1))
https://stackoverflow.com/questions/61772307
复制相似问题