De acordo com a documentação do TensorFlow , os métodos prefetch
e map
da tf.contrib.data.Dataset
classe, ambos têm um parâmetro chamado buffer_size
.
Para o prefetch
método, o parâmetro é conhecido como buffer_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 durante a pré-busca.
Para o map
método, o parâmetro é conhecido como output_buffer_size
e 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 shuffle
mé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 Dataset
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)
Que papel está sendo desempenhado pelos buffer
parâmetros no snippet acima?