Відповідно до документації 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
параметри у наведеному фрагменті?