Відповідно до документації TensorFlow , prefetchі mapметод, і tf.contrib.data.Datasetклас мають обидва параметри buffer_size.
Для prefetchметоду параметр відомий як buffer_sizeі згідно з документацією:
buffer_size: Скалярний tf.Tensor tf.int64, що представляє максимальну кількість елементів, які будуть буферизовані під час попереднього отримання.
Для mapметоду параметр відомий як output_buffer_sizeі згідно з документацією:
output_buffer_size: (Необов’язково.) Скаляр tf.int64 tf.int64, що представляє максимальну кількість оброблених елементів, які будуть буферизовані.
Так само для shuffleметоду, така сама кількість з'являється і згідно з документацією:
buffer_size: Скалярний tf.Tensor tf.int64, що представляє кількість елементів із цього набору даних, з яких буде вибірка нового набору даних.
Яке відношення між цими параметрами?
Припустимо, я створюю 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параметри у наведеному фрагменті?