Keras在训练卷积自动编码器时抛出ResourceExhaustedError。我正在运行Tensorflow后端。这台电脑既有Nvidia Tesla,内存为11 Gbs,Nvidia Quadro也有6 Gbs的内存。似乎Tensorflow正在使用两个GPU?但我对此并不太清楚。这是我使用的代码的最小示例。在我的示例中,数据是一个numpy数组维度=(100,1080,1920,1)。
from keras.layers import Convolution2D, MaxPooling2D, UpSampling2D, Activation
from keras.models import Sequential
model = Sequential()
model.add(Convolution2D(16, 3, 3, border_mode='same', input_shape=(1080, 1920, 1)))
model.add(Activation('relu'))
model.add(MaxPooling2D((2, 2), border_mode='same'))
model.add(Convolution2D(16, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.add(UpSampling2D((2, 2)))
model.add(Convolution2D(1, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.compile(optimizer='adadelta', loss='binary_crossentropy')
model.fit(data, data)
似乎GPU的内存不足。自动编码器有2625个变量。所以这似乎不足以填满视频公羊。阵列数据的大小为1600 MB。所以这也不应该填满视频内存。我猜这个问题与nb_epoch和batch_size有关,但我并不完全清楚这些参数是做什么的。有没有办法改变这些参数来解决我的问题?
答案 0 :(得分:5)
让我们尝试估算一下这个网络需要多少内存(尽管有参数内存):
您可能会看到仅第三层需要超过11GB的内存。此外 - 所有前向值都存储 - 用于反向传播算法 - 因此实际上您需要总结所有这些值以获得内存需求的最终估计。
答案 1 :(得分:0)
更改Convolution2D
- > Conv2D
请参阅:https://stackoverflow.com/a/46032412/7148586