根据 TensorFlow文档,类的prefetch
和map
方法tf.contrib.data.Dataset
都有一个名为buffer_size
.
对于prefetch
方法,参数被称为buffer_size
并根据文档:
buffer_size:一个 tf.int64 标量 tf.Tensor,表示预取时将缓冲的最大元素数。
对于该map
方法,该参数被称为output_buffer_size
并根据文档:
output_buffer_size:(可选。)一个 tf.int64 标量 tf.Tensor,表示将被缓冲的已处理元素的最大数量。
同样对于该shuffle
方法,出现相同的数量并且根据文档:
buffer_size:一个 tf.int64 标量 tf.Tensor,表示新数据集将从该数据集中采样的元素数量。
这些参数之间有什么关系?
假设我创建一个Dataset
对象如下:
tr_data = TFRecordDataset(trainfilenames)
tr_data = tr_data.map(providefortraining, output_buffer_size=10 * trainbatchsize, num_parallel_calls\
=5)
tr_data = tr_data.shuffle(buffer_size= 100 * trainbatchsize)
tr_data = tr_data.prefetch(buffer_size = 10 * trainbatchsize)
tr_data = tr_data.batch(trainbatchsize)
buffer
上述代码段中的参数起什么作用?