首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >斯坦福nlp-共指解析- "java.lang.OutOfMemoryError: Java heap space“

斯坦福nlp-共指解析- "java.lang.OutOfMemoryError: Java heap space“
EN

Stack Overflow用户
提问于 2017-01-31 14:43:19
回答 1查看 286关注 0票数 0

我尝试使用conll 2012试验数据(http://conll.cemantix.org/2012/data.html)训练统计共指解析系统。我想把它训练成医学数据。但我从2012年的conll试验数据开始,以便理解统计互指管道。我只取了两个大小小于2MB的".conll“文件(eng_0012.conll,eng_0014.conll)。这两个文件共包含8个培训文档。

我按照下面的链接构建了模型。

http://stanfordnlp.github.io/CoreNLP/coref.html

( stanford-corenlp-3.7.0.jar:stanford-english-corenlp-models-3.7.0.jar:* edu.stanford.nlp.coref.statistical.StatisticalCorefTrainer -Xmx60g -cp java -props )

这里提到的堆大小是60g。我使用了60g的堆大小和15g的交换内存和16核处理器。

但是在构建模型时,我得到了"java.lang.OutOfMemoryError: Java heap space“异常。

代码语言:javascript
运行
复制
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3181)
    at java.util.ArrayList.grow(ArrayList.java:261)
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
    at java.util.ArrayList.add(ArrayList.java:458)
    at      edu.stanford.nlp.coref.statistical.Clusterer.getFeatures(Clusterer.java:661)
    at edu.stanford.nlp.coref.statistical.Clusterer.access$700(Clusterer.java:27)
    at edu.stanford.nlp.coref.statistical.Clusterer$State.getActions(Clusterer.java:460)
    at edu.stanford.nlp.coref.statistical.Clusterer.runPolicy(Clusterer.java:225)
    at edu.stanford.nlp.coref.statistical.Clusterer.doTraining(Clusterer.java:167)
    at edu.stanford.nlp.coref.statistical.StatisticalCorefTrainer.doTraining(StatisticalCorefTrainer.java:127)
    at edu.stanford.nlp.coref.statistical.StatisticalCorefTrainer.main(StatisticalCorefTrainer.java:146)

当我在"edu/stanford/nlp/coref/statistical/Clusterer.java“类的"doTraining”方法中将训练文档从8个减少到4个时,它运行成功。

代码语言:javascript
运行
复制
int count = 1;
for (ClustererDoc trainDoc : trainDocs) {
    if (count == 5) {
        break;
    }
    count++;
    examples.add(runPolicy(trainDoc, Math.pow(EXPERT_DECAY(iteration +1))));
}

我不明白为什么在给出一个非常小的数据量(小于2MB)所需的配置之后,我会得到这个内存不足异常。

有什么方法可以优化内存使用吗?

当我浏览源代码时,我发现了一些文件,如demonyms.txt,gender.data.gz,inanimate.unigrams.txt,state-abbrevations.txt等。我是否需要创建任何指定医疗实体的文件来训练医疗领域,以获得更好的准确性?

EN

回答 1

Stack Overflow用户

发布于 2017-01-31 14:47:26

这是因为超出了您的堆空间。

好心的

代码语言:javascript
运行
复制
-Xms512m -Xmx1152m -XX:MaxPermSize=256m -XX:MaxNewSize=256m

在您的ide中查看一次这些。并在需要时增加它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41951228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档