def csv_reader_dataset(filenames, n_readers=5,
batch_size=32, n_parse_threads=5,#做解析时的并行度
shuffle_buffer_size=10000):#混排数据时的buffer的size
dataset = tf.data.Dataset.list_files(filenames)
dataset = dataset.repeat()#数据集重复了指定次数,参数为空:重复无限次
dataset = dataset.interleave(
lambda filename: tf.data.TextLineDataset(filename).skip(1),
cycle_length = n_readers
)
dataset.shuffle(shuffle_buffer_size) #将数据打乱,数值越大,混乱程度越大
dataset = dataset.map(parse_csv_line,
num_parallel_calls=n_parse_threads)
dataset = dataset.batch(batch_size)#batch(4)是把dataset变成四份
return dataset
老师,我对上面这个函数的实现流程不懂:
1。首先将全部文件名变成一个dataset,然后将数据集重复了无限次,是为什么?
2. 数据集重复后,调用interleave函数,获取每个文件名对应的文本内容即dataset,最后合并生成新的dataset,调用shuffle(shuffle_buffer_size) #将数据打乱,括号里数值越大,混乱程度越大,为什么要将已经重复了无限次的数据集进行混排?
3. map函数解析,将数据集按照batch_size分块。以上是我对这个函数的理解。
最后,老师,repeat()和shuffle()和batch()这三个函数的执行顺序不同是否影响结果,有什么影响?它们的执行顺序是怎么决定的?
为什么要重复无限次?为什么要混排?