使用Theano进行卷积的内存不足错误

时间:2016-04-20 15:50:54

标签: machine-learning neural-network theano conv-neural-network convolution

我正在Theano做卷积:

theano.tensor.nnet.conv.conv2d(x,h, border_mode='full') 

并且内存不足,我收到以下消息:

RuntimeError: GpuCorrMM failed to allocate working memory of 3591 x 319086

Apply node that caused the error: GpuCorrMM_gradInputs{valid, (1, 1)}(GpuContiguous.0, GpuContiguous.0)
Inputs types: [CudaNdarrayType(float32, (True, False, True, False)), CudaNdarrayType(float32, (False, True, False, False))]
Inputs shapes: [(1, 513, 1, 7), (1, 1, 513, 622)]
Inputs strides: [(0, 7, 0, 1), (0, 0, 622, 1)]
Inputs values: ['not shown', 'not shown']

我已尝试将theano标记设置为'optimizer_excluding = conv_dnn',但仍无法正常工作。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:3)

您正在尝试分配一个需要9TB内存的矩阵。个体神经元需要2.5GB的内存。我所知道的唯一优化是减少单位数量或购买更多内存。大量的RAM:)

答案 1 :(得分:0)

对我来说,我在运行时禁用了g ++,只需从路径变量中删除(MinGW)bin目录即可。处理时间很慢,但它完成了整个过程。

我的程序执行环境:操作系统Windows Vista 32位,CPU Intel 2.16 GHz,RAM 4.00 GB且无GPU