【发布时间】:2013-02-21 02:51:36
【问题描述】:
我有一个架构为1024, 512, 256, 1 的神经网络(输入层有1024 单元,输出层有1 单元等)。我想使用scipy.optimize 中的一种优化算法来训练这个网络。
问题是这些算法期望函数参数在一个向量中给出;这意味着,就我而言,我必须将所有权重展开为长度向量
1024*512 + 512*256 + 256*1 = 655616
一些算法(如fmin_bfgs)需要使用恒等矩阵,所以它们会调用类似
I = numpy.eye(655616)
不出所料,它产生了MemoryError。除了使scipy.optimize 中的算法适应我自己的需要之外,我有什么办法可以避免将所有权重展开到一个向量中?
【问题讨论】:
-
哇,要适应很多重量。 (+1)
-
@NPE 我不得不承认我真的不知道自己在做什么。我正在训练大小为
32x32的图像。我应该让图片更小吗? -
再一次,将图像的大小减小到
16x16并使用架构256, 128, 1,我仍然拥有长度为32896的展开权重向量。 -
一般来说,如果您在 Python 中遇到性能问题,可能是时候尝试使用其他语言完成繁重的工作了。
标签: python numpy machine-learning scipy