Significado de buffer_size em Dataset.map, Dataset.prefetch e Dataset.shuffle

Conforme TensorFlowdocumentação , aprefetch emap métodos detf.contrib.data.Dataset classe, ambos têm um parâmetro chamadobuffer_size.

Paraprefetch método, o parâmetro é conhecido comobuffer_size e de acordo com a documentação:

buffer_size: um tf.int64 escalar tf.Tensor, representando o número máximo de elementos que serão armazenados em buffer ao pré-buscar.

Para omap método, o parâmetro é conhecido comooutput_buffer_size e de acordo com a documentação:

output_buffer_size: (Opcional.) Um escalar tf.int64 tf.Tensor, representando o número máximo de elementos processados que serão armazenados em buffer.

Da mesma forma para oshuffle método, a mesma quantidade aparece e de acordo com a documentação:

buffer_size: um escalar tf.int64 tf.Tensor, representando o número de elementos desse conjunto de dados do qual o novo conjunto de dados será amostrado.

Qual a relação entre esses parâmetros?

Suponha que eu crie umDataset objeto da seguinte maneira:

 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)

Qual o papel desempenhado pelobuffer parâmetros no snippet acima?

questionAnswers(5)

yourAnswerToTheQuestion