我正在使用python库进行深度学习和神经网络。我正在运行的计算机有16 GB的RAM,1866 MHz。起初,我的输入数据文件过大,所以我把它弄坏了小:Python内存错误与Python pkl文件
-rw-rw-r-- 1 jt jt 1.8G Mar 20 18:09 covarFile.pkl
造成的:
Traceback (most recent call last): File "PYJT2/pp_dbn.py", line 69, in <module> go() File "PYJT2/pp_dbn.py", line 32, in go model = cPickle.load(open(CONTROL_DBN.INPUT, "rb")) MemoryError
由于文件是numpy的阵列只是一个numpy的阵列,我可以将它分解成单独的文件,并通过加载大量的pickle文件在程序中动态地重新创建较大的文件。
total 5.2G drwxrwxr-x 2 jt jt 4.0K Mar 20 18:15 ./ drwxrwxr-x 4 jt jt 4.0K Mar 20 18:15 ../ -rw-rw-r-- 1 jt jt 351M Mar 20 18:09 outfile-0.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:11 outfile-10.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:11 outfile-11.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:12 outfile-12.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:12 outfile-13.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:12 outfile-14.pkl -rw-rw-r-- 1 jt jt 2.3M Mar 20 18:12 outfile-15.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:09 outfile-1.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:09 outfile-2.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:10 outfile-3.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:10 outfile-4.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:10 outfile-5.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:10 outfile-6.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:11 outfile-7.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:11 outfile-8.pkl -rw-rw-r-- 1 jt jt 351M Mar 20 18:11 outfile-9.pkl
而且这个解决方案工作得很好。 我的问题是,现在我有一个文件,导致MemoryError
,我不知道如何进一步分手。它是一个theano张量变量,代表30,000x30,000的浮点数矩阵。我的问题:
- 是否有一种方法可以跨多个pkl文件保存某些内容,即使您不确定如何划分基础数据结构?
- 将在我们的实验室服务器(48 GB)上运行此更好吗?或者是这个内存错误独立于架构?
- 我现在拥有的庞大的pkl文件太大,无法使用毫无价值?我希望不是,大约8个小时的神经网络训练。
- 除了使用任何人都可以想到的数据库之外,还有其他解决方案吗?如果可能的话,我强烈希望而不是使用数据库,因为我已经不得不将软件转移到众多的服务器上,其中许多服务器我没有root访问权限,并且很难安装其他东西。