gpt4 book ai didi

tensorflow - 为什么 Keras 会抛出 ResourceExhaustedError?

转载 作者:行者123 更新时间:2023-12-02 23:54:45 27 4
gpt4 key购买 nike

Keras 在训练卷积自动编码器时抛出 ResourceExhaustedError。我正在运行 Tensorflow 后端。该计算机配有 11 Gb 内存的 Nvidia Tesla 和 6 Gb 内存的 Nvidia Quadro。看起来 Tensorflow 正在使用两个 GPU?但我对此不太清楚。这是我正在使用的代码的最小示例。在我的示例中,数据是一个维度=(100,1080,1920,1)的numpy数组。

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. 输入:1600MB
  2. 第一层:~ 1600MB * 16/4 = 6400MB( channel 和池化层增加了 16 倍 - 将其输入大小减少了 4)。
  3. 第二层:6400MB(一层的输入和输出相同)。
  4. 第三层:25600MB(您的数据量增加了 4 倍)。
  5. 输出层:1600MB(与输入相同)。

您可能会发现仅第三层就需要超过 11GB 的内存。此外 - 所有前向值都被存储 - 用于反向传播算法 - 因此实际上您需要将所有这些值相加才能获得内存需求的最终估计。

关于tensorflow - 为什么 Keras 会抛出 ResourceExhaustedError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com