我正在尝试使用 Theano 后端在 Keras 中训练模型并使用我的 GPU。如果我使用 100 张图像或 20K 运行,我会从 Theano 收到一个错误(如下所示),说我没有足够的内存,但我的 GPU 上有 6GB。我使用了 Keras文档“ THEANO_FLAGS=device=gpu,floatX=float32 python my_keras_script.py”中的THEANO_FLAG \n[lib]\ncnmem=0\n" >> ~/.theanorc ) 来设置 cnmem 变量,所以如果你使用 Keras 的标志,它将使用你设置的 cnmem 堆栈溢出之一。
我已将 cnmem 设置为 0.83(它不会立即出错的最高值)和 0 并且没有它需要的 822 MB,但我有 6GB 的视频内存。我确定我做错了一些简单的事情,但我找不到任何信息。
我在 Ubuntu 14.04 上并且安装了 CUDA。我刚刚使用“THEANO_FLAGS=device=gpu,floatX=float32 python mnist_transfer_cnn.py”做了Keras MNIST示例
MemoryError: Error allocating 822083584 bytes of device memory (out of memory).
Apply node that caused the error: GpuElemwise{add,no_inplace} (GpuDnnConv{algo='small', inplace=True}.0, GpuReshape{4}.0)
Toposort index: 375
Inputs types: [CudaNdarrayType(float32, 4D), CudaNdarrayType(float32, (True, False, True, True))]
Inputs shapes: [(64, 64, 224, 224), (1, 64, 1, 1)]
Inputs strides: [(3211264, 50176, 224, 1), (0, 1, 0, 0)]
Inputs values: ['not shown', 'not shown']
Outputs clients: [[GpuElemwise{Composite{(i0 * (i1 + Abs(i1)))},no_inplace}(CudaNdarrayConstant{[[[[ 0.5]]]]}, GpuElemwise{add,no_inplace}.0), GpuElemwise{Composite{((i0 * i1) + (i0 * i1 * sgn(i2)))}}[(0, 1)](CudaNdarrayConstant{[[[[ 0.5]]]]}, GpuDnnPoolGrad{mode='max'}.0, GpuElemwise{add,no_inplace}.0)]]
HINT: Re-running with most Theano optimization disabled could give you a back-trace of when this node was created. This can be done with by setting the Theano flag 'optimizer=fast_compile'. If that does not work, Theano optimizations can be disabled with 'optimizer=None'.
HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.