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?