当前位置:  开发笔记 > 人工智能 > 正文

为什么Keras会抛出ResourceExhaustedError?

如何解决《为什么Keras会抛出ResourceExhaustedError?》经验,为你挑选了1个好方法。

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有关,但我不清楚这些参数是做什么的.有没有办法改变这些参数来解决我的问题?



1> Marcin Możej..:

让我们试着估算一下这个网络需要多少内存(尽管参数有内存):

    输入:1600MB

    第一层:~1600MB*16/4 = 6400MB(你有16倍的通道和池层 - 将输入的大小减少4倍).

    第二层:6400MB(图层的输入和输出相同).

    第三层:25600MB(您的数据量增加了4倍).

    输出层:1600MB(与输入相同).

您可能会看到仅第三层需要超过11GB的内存.此外 - 所有前向值都存储 - 用于反向传播算法 - 因此实际上您需要总结所有这些值以获得内存需求的最终估计.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有