Почему для этой модели Keras требуется более 6 ГБ памяти?

Кажется, что эта модель Keras требует 6 ГБ + ОЗУ с использованием бэкэнда Tensorflow. Моя математика с обратной связью предполагает, что хранение весов не должно превышать 500 МБ. Что происходит?

from keras.models import Sequential from keras.layers.core import Dense, Activation, Dropout, Flatten from keras.layers.convolutional import Convolution2D, MaxPooling2D IMAGE_SIZE = 128 print('Build model...') model = Sequential() # three color channels, 128x128 # 16 con filters, 3 rows, 3 columns model.add(Convolution2D(16, 3, 3, input_shape=(3, IMAGE_SIZE, IMAGE_SIZE))) model.add(Activation('relu')) model.add(Flatten()) model.add(Dense(1)) model.add(Dense(3 * IMAGE_SIZE * IMAGE_SIZE)) model.compile(loss='mse', optimizer='sgd') 

Это слой свертки (16 3×3 фильтров), подключенный к одному нейрону, а затем этот единственный нейрон подключен к нейронам ~ 50 к.

Я довольно новичок в Keras, поэтому я понимаю, что мое недопонимание довольно фундаментально, но я не могу понять, что это.

Оказывается, моя проблема включала путь к CUDA 7.5 в моем LD_CONFIG_PATH , но включала путь к CUDA 7.0 в PATH . По-видимому, эта неудобная комбинация порождает некоторое неопределенное поведение, которое в моем случае вызвало утечку памяти.

Изучив код с valgrind , я обнаружил, что nvcc из 7.0 по сути перепрыгивал в бессмысленные области библиотеки CUDA (7.5), что не является неожиданным. На самом деле это очень удивительно, что он просочился в память, а не просто разбился, и что у Теана была такая же ошибка.

Надеюсь, никто другой не пострадает от этой конкретной проблемы в будущем, но если вы, дважды проверьте свои пути к версии!

На моем локальном компьютере, без установленного Tensorflow GPU'd, я все же получил утечку памяти, которая появилась в результате ошибки в предыдущей версии (0.7.0), которая была разрешена с выпуском (0.7.1). Опять же, я не понял, почему мой бэкенд без использования GPU Theano также вызвал утечку, но после обновления Tensorflow, Theanan-бэкенд также не течет . Это очень странно, но я считаю, что общее решение этой проблемы – «обновление» и «двойная проверка вашего env».