数据太大,不想全部加载到内存中,Memory Error
2018-08-28 本文已影响138人
布口袋_天晴了
一、词向量太大,不想全部加载到内存中,Memory Error
问题:大数据集下训练得到的词向量,往往数量集很大,并且随着向量维度的增加,文件的大小也在增加。 当训练得到的词向量有3GB+,我实在是不想在对其他问题进行建模时,加载这么大的词向量进入内存。。。xX....Xx
当自己的小小笔记本电脑内存不够用时,就Memory Out,Memory Error了。
python编程
解决办法一:使用64位的Python。值得注意的是,当你的词向量集总共是3GB+需要加载到内存,就得保证电脑配置的内存RAM多余4GB。
![](https://img.haomeiwen.com/i6102062/82543cbe5ec5ae87.png)
解决办法二:
使用load_word2vec_format()的limit参数,限制加载到内存的词向量的数量。词向量文件里的词序是按照高频到低频的次序排的,所以前面高频的词可能是你更希望要的。
![](https://img.haomeiwen.com/i6102062/0d7005fb79894e95.png)
![](https://img.haomeiwen.com/i6102062/0d825e82672e3f12.png)
![](https://img.haomeiwen.com/i6102062/7b09f3f61b1dbef4.png)
二、训练数据集太大,不想全部加载到内存中,Memory Error
问题:怎么加载10GB+的数据文件?
7种思路:1)分配更多的内存 2)用更小的样本 3)更多内存 4)转换数据格式 5)流式处理数据,或渐进式的数据加载 6)使用关系数据库 7)使用大数据平台 详细说明,请参考文章:原文
比较大众化的、可靠好用的方法是:流式处理数据,将训练数据集一小部分一小部分的加载到内存中,让模型按照这种增量式的方式进行学习。使用yield,构建一个文件迭代器。
![](https://img.haomeiwen.com/i6102062/0c93e0d5aeb36cc2.png)
![](https://img.haomeiwen.com/i6102062/70be8ae1bed2bcc8.png)
在深度学习中,batch的量不要设置太小,太小的话,需要多迭代几次才能收敛。
参考文章:
【1】ValueError: array is too big when loading GoogleNews-vectors-negative