当我尝试将辍学添加到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。
为什么辍学会占用这么多内存?
答案 0 :(得分:0)
在大多数情况下,张量流/ Keras OOM(内存不足)错误是由于过多的模型参数引起的,即巨大的维度数据(如您所知) )和/或较高的批量大小值,也可以将其解释为尺寸因素。
尽可能降低解决方案之一,或者同时尝试优化学习进程的内存消耗和速度(!)。
有时可能是由于对所需任务的错误解释或/和抽象。