数据太大,不想全部加载到内存中,Memory Error

一、词向量太大,不想全部加载到内存中,Memory Error

问题:大数据集下训练得到的词向量,往往数量集很大,并且随着向量维度的增加,文件的大小也在增加。   当训练得到的词向量有3GB+,我实在是不想在对其他问题进行建模时,加载这么大的词向量进入内存。。。xX....Xx

当自己的小小笔记本电脑内存不够用时,就Memory Out,Memory Error了。


python编程

解决办法一:使用64位的Python。值得注意的是,当你的词向量集总共是3GB+需要加载到内存,就得保证电脑配置的内存RAM多余4GB。

解决办法二:

使用load_word2vec_format()的limit参数,限制加载到内存的词向量的数量。词向量文件里的词序是按照高频到低频的次序排的,所以前面高频的词可能是你更希望要的。


二、训练数据集太大,不想全部加载到内存中,Memory Error

问题:怎么加载10GB+的数据文件?

7种思路:1)分配更多的内存  2)用更小的样本 3)更多内存 4)转换数据格式 5)流式处理数据,或渐进式的数据加载 6)使用关系数据库 7)使用大数据平台     详细说明,请参考文章:原文

比较大众化的、可靠好用的方法是:流式处理数据,将训练数据集一小部分一小部分的加载到内存中,让模型按照这种增量式的方式进行学习。使用yield,构建一个文件迭代器。

demo版,根据自身情况修改
结果

在深度学习中,batch的量不要设置太小,太小的话,需要多迭代几次才能收敛。


参考文章:

【1】ValueError: array is too big when loading GoogleNews-vectors-negative

【2】Word2vec Tutorial

【3】七条解决思路:大数据之数据太大内存爆炸怎么办?—科多大数据

你可能感兴趣的:(数据太大,不想全部加载到内存中,Memory Error)