ram*_*ram 5 scipy python-3.x google-cloud-platform
我正在尝试将形状 (1482535, 67826) 的 scipy.sparse.csr.csr_matrix 存储到数据框中,但出现如下错误。我在具有 4CPU 和 208 GB 内存的 Google Cloud Platform 上运行。我不能再增加我的记忆了。我该如何解决这个问题?任何建议表示赞赏。
type(x_train_bow_name)`
scipy.sparse.csr.csr_matrix
data1 = pd.DataFrame(x_train_bow_name.toarray())`
-----------------------------------------------------------------
----------
MemoryError Traceback (most recent
call
last)
<ipython-input-16-283fa4dd2dd6> in <module>
----> 1 data1 = pd.DataFrame(x_train_bow_name.toarray())
/usr/local/lib/python3.5/dist-
packages/scipy/sparse/compressed.py in toarray(self, order, out)
1022 if out is None and order is None:
1023 order = self._swap('cf')[0]
-> 1024 out = self._process_toarray_args(order, out)
1025 if not (out.flags.c_contiguous or
out.flags.f_contiguous):
1026 raise ValueError('Output array must be C or
F contiguous')
/usr/local/lib/python3.5/dist-packages/scipy/sparse/base.py in
_process_toarray_args(self, order, out)
1184 return out
1185 else:
-> 1186 return np.zeros(self.shape,
dtype=self.dtype, order=order)
1187
1188
MemoryError: Unable to allocate array with shape (1482535, 67826)
and data type int64
Run Code Online (Sandbox Code Playgroud)
一切都表明这是内存过度使用问题。
\n请查看以下链接,其中很好地解释了 Linux 中的虚拟内存设置以及过度使用的问题。
\n修改过量使用设置的两个参数是/proc/sys/vm/overcommit_memory和/proc/sys/vm/overcommit_ratio。
/proc/sys/vm/overcommit_memory\n这个开关知道 3 种不同的设置,但在你的情况下我认为你可以使用值 =1
1:经典示例是使用稀疏数组的代码,并且仅依赖于几乎完全由零页组成的虚拟内存。
\n超级用户可以更改该设置:
\necho 1 > /proc/sys/vm/overcommit_memory\nRun Code Online (Sandbox Code Playgroud)\n默认值为0
/proc/sys/vm/overcommit_ratio\n此设置仅在 时使用overcommit_memory = 2,并定义使用物理 RAM 的百分比。最重要的是交换空间。默认值为 \xe2\x80\x9c50\xe2\x80\x9d,即 50%。
超级用户可以更改该设置:
\necho 75 > /proc/sys/vm/overcommit_ratio\nRun Code Online (Sandbox Code Playgroud)\n另外请看一下下面的帖子
\n| 归档时间: |
|
| 查看次数: |
20263 次 |
| 最近记录: |