我尝试使用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“异常。
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个时,它运行成功。
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等。我是否需要创建任何指定医疗实体的文件来训练医疗领域,以获得更好的准确性?
发布于 2017-01-31 14:47:26
这是因为超出了您的堆空间。
好心的
-Xms512m -Xmx1152m -XX:MaxPermSize=256m -XX:MaxNewSize=256m在您的ide中查看一次这些。并在需要时增加它们。
https://stackoverflow.com/questions/41951228
复制相似问题