tensorflow/keras 模型的内存不足 (OOM) 错误

Out of memory (OOM) error of tensorflow/keras model

当我尝试将 dropout 添加到 keras 模型时,它导致 OOM 错误: tensorflow.python.framework.errors_impl.ResourceExhaustedError:分配形状为 [128,128,176,216] 的张量时 OOM...

模型假设是产生超分辨率 x4 的自动编码器。

autoencoder = Sequential()
autoencoder.add(Conv2D(64*comlex, (3, 3), activation='relu', 
padding='same', input_shape=x_train[0].shape))
autoencoder.add(Dropout(0.25))
autoencoder.add(UpSampling2D((2, 2)))
autoencoder.add(Conv2D(64*comlex, (3, 3), activation='relu', padding='same'))
# autoencoder.add(Dropout(0.25))
autoencoder.add(UpSampling2D((2, 2)))
autoencoder.add(Conv2D(3, (3, 3), activation='sigmoid', padding='same'))
autoencoder.compile(optimizer='adam', loss='binary_crossentropy',metrics=['accuracy'])

注释中的一行导致OOM。

为什么dropout会占用这么多内存?

更新:

Tensorflow/Keras OOM(Out of memory) 错误发生是因为模型参数过多,例如image size/feature number 等具有高 batch size 值,这会导致更高的 GPU 内存消耗。 有时这些也可能与先前进程的残余内存相关联。