【发布时间】:2017-04-11 14:54:49
【问题描述】:
在theano中,以下代码sn-p抛出内存错误:
self.w = theano.shared(
np.asarray(
np.random.normal(
loc=0.0, scale=np.sqrt(1.0/n_out), size=(n_in, n_out)),
dtype=theano.config.floatX),
name='w', borrow=True)
仅提及大小 n_in=64*56*56 和 n_out=4096。 sn-p 取自全连接层的 init 方法。查看回溯:
Traceback (most recent call last):
File "<stdin>", line 8, in <module>
File "final.py", line 510, in __init__
loc=0.0, scale=np.sqrt(1.0/n_out), size=(n_in, n_out)),
File "mtrand.pyx", line 1636, in mtrand.RandomState.normal (numpy/random/mtrand/mtrand.c:20676)
File "mtrand.pyx", line 242, in mtrand.cont2_array_sc (numpy/random/mtrand/mtrand.c:7401)
MemoryError
有什么办法可以解决这个问题吗?
【问题讨论】:
-
这是一个巨大的数组(8.22 亿个元素!)。您实际上不太可能需要分配它。
-
解决方法很简单:尝试使用更少的元素:)
-
@MSeifert 该数组用于保存深度神经网络的参数,我们必须随机初始化所有参数才能开始解决问题。为了减少您所建议的参数数量,我们将不得不更改网络架构,这是我不想要的。
标签: python numpy memory theano