De acordo com a documentação do TensorFlow , os métodos prefetche mapda tf.contrib.data.Datasetclasse, ambos têm um parâmetro chamado buffer_size.
Para o prefetchmétodo, o parâmetro é conhecido como buffer_sizee 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 durante a pré-busca.
Para o mapmétodo, o parâmetro é conhecido como output_buffer_sizee de acordo com a documentação:
output_buffer_size: (Opcional.) Um tf.int64 escalar tf.Tensor, representando o número máximo de elementos processados que serão armazenados em buffer.
Da mesma forma para o shufflemétodo, aparece a mesma quantidade e de acordo com a documentação:
buffer_size: Um tf.int64 escalar tf.Tensor, representando o número de elementos deste conjunto de dados do qual o novo conjunto de dados terá uma amostra.
Qual é a relação entre esses parâmetros?
Suponha que eu crie um Datasetobjeto 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)
Que papel está sendo desempenhado pelos bufferparâmetros no snippet acima?