处理多重网络中的内存问题

Pau*_*nta 5 python numpy machine-learning scipy

我有一个神经网络与架构1024, 512, 256, 1(输入层有1024单位,输出层有1单位等).我想使用其中一种优化算法训练这个网络scipy.optimize.

问题是这些算法期望在一个向量中给出函数参数; 这意味着,在我的情况下,我必须在长度向量中展开所有权重

1024*512 + 512*256 + 256*1 = 655616
Run Code Online (Sandbox Code Playgroud)

有些算法(比如fmin_bfgs)需要使用标识矩阵,因此它们会调用

I = numpy.eye(655616)
Run Code Online (Sandbox Code Playgroud)

这并不令人惊讶地产生了一个MemoryError.有没有办法让我避免将所有权重展开到一个向量中,scipy.optimize而不是根据自己的需要调整算法?

blz*_*blz 0

我认为内存映射可以解决你的问题。我建议使用numpy.memmap,它针对 numpy 数组进行了优化。请注意,虽然内存映射可能很快,但您应该留意抖动

对于您的一般文化,mmap模块是一个更通用的内存映射库,包含在标准库中。