DenseNets обычно занимают много памяти в TensorFlow, потому что каждая операция concat хранится в отдельном выделении. Недавняя статья, Реализация DenseNets с эффективным использованием памяти, демонстрирует, что использование памяти может быть значительно сокращено за счет совместного использования ресурсов. Это изображение из реализации paper + pytorch иллюстрирует подход с общей памятью:
Как это можно реализовать с помощью TensorFlow? Если это не может быть сделано через python, как это может быть правильно реализовано в операторе с поддержкой CPU и GPU?
Я создал TensorFlow Feature Request для необходимой функциональности распределения.
Реализация с эффективным использованием памяти теперь доступна по адресу:
https://github.com/joeyearsley/efficient_densenet_tensorflow
Соответствующая функция из вышеуказанной ссылки:
# Gradient checkpoint the layer
_x = tf.contrib.layers.recompute_grad(_x)
Других решений пока нет …