- У меня есть простая CNN (4 слоя conv-pool-lrelu и 2 полносвязных).
- Я использую TensorFlow только на процессоре (без графического процессора).
- У меня есть ~ 6 ГБ доступной памяти.
- Мои партии состоят из 56 изображений размером 640x640 пикселей ( ‹ 100 МБ ).
И TensorFlow потребляет больше доступной памяти (что, очевидно, приводит к сбою программы).
Мой вопрос: почему TensorFlow требует столько памяти для запуска моей сети? Я не понимаю, что занимает так много места (может быть, кэширование данных несколько раз для оптимизации вычислений свертки? Сохранение всех скрытых выходных данных для целей обратного распространения?). И есть ли способ предотвратить использование TensorFlow такого большого объема памяти?
Побочные примечания:
- Я не могу уменьшить размер пакета, я пытаюсь провести обучение с несколькими экземплярами, поэтому мне нужно вычислить все мои патчи за один прогон.
- Я использую AdamOptimizer
- Все мои свертки - это окна 5x5, шаг 1x1, с (от 1-го до последнего) 32, 64, 128 и 256 функциями. Я использую дырявые ReLU и максимальный пул 2x2. Слои FC состоят из 64 и 3 нейронов.
- Использование Ubuntu 16.4/Python 3.6.4/TensorFlow 1.6.0