Tensorpack — это интерфейс для обучения нейронных моделей, который основан на TensorFlow. Обучение моделей на Tensorpack занимает в 1.2-5 раза меньше времени, чем на Keras, оригинальной высокоуровневой библиотеке на TensorFlow.
Фактически Tensorpack представляет собой высокоуровневое API над TensorFlow, но с преимуществом в скорости работы и гибкостью в использовании. Tensorpack фокусируется на двух аспектах: скорость обучения модели и работа с крупными наборами данных.
Время обучения
В Tensorpack оптимизировано использование TensorFlow так, чтобы исключить излишние траты вычислительных ресурсов. По результатам экспериментов, для стандартных архитектур сверточных нейросетей Tensorpack работает в 1.2-5 быстрее, чем эквивалентный код на Keras.
Распрараллеливание данных, использование нескольких GPU и распределенных вычислений доступны в Tensorpack для ускорения времени обучения модели. Время обучения с использованием этих техник масштабируется так же, как у TensorFlow.
Обработка больших датасетов
Обычно использование tf.data для загрузки данных в Python не необходимо. Символическое программирование делает обработку данных более сложной. В Tensorpack есть отдельная библиотека для эффективной обработки крупный наборов данных на чистом Python с автопараллелизацией.
Tensorpack — это не обертка над моделями
На текущий момент существует множество символических оберток над функциями. Tensorpack включает несколько общих моделей. Но пользователь может самостоятельно использовать библиотеку для символического обертывания внутри Tensorpack: tf.layers, Keras, slim, tflearn, tensorlayer и т.д.
Функционал Tensorpack
БиблиотекаTensorpack состоит из следующих ключевых элементов:
- DataFlow: библиотека для эффективной загрузки данных в Python. Помимо DataFlow, можно использовать оригинальные операторы для обработки данных из TF;
- Любая библиотека для символической обертки функций, которая основана на TensorFlow, может использоваться для определения модели;
- Тренеры (trainers) Tensorpack отвечают за обучающие циклы. Они отвечают и за параллелизацию, использование GPU и разпределенное обучение;
- Callback’и используются во время обучения для определения сторонних действий, не считая основных итераций обучения модели. Их можно кастомизировать на усмотрение
Открытые тьюториалы по работе с Tensorpack доступны по ссылке.