张量流/ keras模型的内存不足(OOM)错误

时间:2018-12-06 19:39:08

标签: tensorflow keras 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。

为什么辍学会占用这么多内存?

1 个答案:

答案 0 :(得分:0)

在大多数情况下,张量流/ Keras OOM(内存不足)错误是由于过多的模型参数引起的,即巨大的维度数据(如您所知) )和/或较高的批量大小值,也可以将其解释为尺寸因素。

尽可能降低解决方案之一,或者同时尝试优化学习进程的内存消耗和速度(!)。

有时可能是由于对所需任务的错误解释或/和抽象。