我想训练一个单词可预见性任务来生成单词嵌入。文档集合包含243 k文档。代码实现在torch中。我正在与庞大的数据集作斗争,并需要关于如何在这样一个大的数据集上训练单词嵌入的想法,这个数据集包含了24.3万篇完整的文章文档。研究计算资源是定时的,因此可以短时间访问GPU节点,因此选择了增量模型培训:
发布于 2016-11-15 05:22:13
您可以通过tds库克服内置内存限制,它允许您构建不受Lua内存限制的或多或少等效的结构。这将无助于您的硬件的限制,但您将能够拥有大于2GB的表。
另外,如果所有这些都失败了,您可以考虑将词汇表划分为较小的表。然后,当您需要访问它时,您将有某种类型的主表,其中您将查找要查找的元素的正确的词汇表。这将需要对词汇表进行排序,因此仍然必须同时将其全部存储在内存中(或者实现您自己的巧妙排序算法),但只要词汇表保持不变,您只需要进行一次排序。然后,您序列化所有的词汇表,并根据需要从磁盘上加载它们,这将是缓慢的,但仍然比填充物理内存和消耗交换空间更快。可能吧。
发布于 2016-06-08 08:56:15
我对火炬并不熟悉,但是由于基本上考虑了word2vec和doc2vec,所以这些模型可以从每个句子中学习,所以没有必要将所有的句子都存储在记忆中。你可以遍历语料库中的每个句子,让模型从每个句子中学习。这可能就是人们如何训练庞大的语料库,有或没有高计算机器。
在python中有一个简短的例子:
class SentenceIterator(object):
def __iter__(file_name):
for line in open(file_name)
yield line
sentences = SentenceIterator("path/to/file")
for line in sentences:
model.train(line)这样,内存一次只加载一个句子,当它完成时,内存加载下一个句子。为了构建词汇表,您可以通过所有文档进行整个迭代,首先构建词汇表,然后根据实现的单词嵌入函数对数据进行训练。
https://datascience.stackexchange.com/questions/12109
复制相似问题