Кэширование набора данных с примерами различной длины

Мой набор данных состоит из аудиосегментов продолжительностью от 5 до 180 секунд. Количество примеров достаточно мало, чтобы их можно было кэшировать в памяти, а не читать с диска снова и снова. Хранение данных в постоянном тензоре/переменной и использование tf.train.slice_input_producer позволит мне кэшировать набор данных в памяти, но требует хранения всех данных в одной матрице. Поскольку некоторые примеры намного длиннее других, эта матрица может быть излишне большой и, возможно, слишком большой для оперативной памяти.

Я могу просто иметь список массивов numpy для своих данных и выполнять все входные операции чтения-рандомизации-предварительной обработки без использования tensforflow с помощью feed_dict, но мне интересно, есть ли способ сделать это, не отказываясь полностью от tensorflow для части входного чтения-рандомизации-предварительной обработки.

Спасибо!


person cruvadom    schedule 10.10.2016    source источник
comment
как насчет использования queue.dequeue_many(length_of_audio)   -  person Yaroslav Bulatov    schedule 10.10.2016
comment
Что ты имеешь в виду?   -  person cruvadom    schedule 10.10.2016
comment
Загрузите свои примеры в очередь вместо матрицы, а затем используйте queue.dequeue_many, чтобы загрузить их в тензоры различной длины.   -  person Yaroslav Bulatov    schedule 10.10.2016
comment
Это может сработать, в этом случае я думаю, что мне нужно сгруппировать операции постановки в очередь и удаления из очереди, чтобы отправить пример обратно в очередь после того, как он был удален из очереди.   -  person cruvadom    schedule 11.10.2016


Ответы (1)


Более поздняя библиотека tf.data предоставляет tf.data.Dataset.cache для кэширования всего набора данных в памяти или в файле.

Например:

dataset = ...
dataset = dataset.map(preprocessing_fn)  # apply preprocessing
dataset = dataset.cache()  # cache entire dataset in memory after preprocessing

Я предоставил более подробную информацию о том, как использовать cache() в этом ответе.

person Olivier Moindrot    schedule 12.02.2018