2017-01-31 6 views
-1

Я попытался подготовить статистическую систему разрешения кодового пространства с данными пробной версии conll 2012 (http://conll.cemantix.org/2012/data.html). Я хотел обучить его медицинским данным. Но я начал с пробных данных conll 2012, чтобы понять конвейер статистической базы. Я взял только два файла .conll размером менее 2 МБ (eng_0012.conll, eng_0014.conll). Эти два файла содержат в общей сложности 8 учебных документов.Стэнфордское разрешение nlp-Coreference - «java.lang.OutOfMemoryError: Java heap space»

Я следил за ссылкой, чтобы построить модель.
http://stanfordnlp.github.io/CoreNLP/coref.html
(Java -Xmx60g -cp Стэнфорд-corenlp-3.7.0.jar: Стэнфорд-английский-corenlp-модели-3.7.0.jar: * edu.stanford.nlp.coref.statistical.StatisticalCorefTrainer -props)

Здесь размер кучи упоминается как 60г. Я использовал размер кучи 60 г и память подкачки 15 г и 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) 

Когда я уменьшил учебный документ для от 8 до 4 в методе "doTraining" из "Edu/NLP/COREF/Clusterer.java Стэнфорде// статистического" класса, он побежал успешно.

int count = 1; 
for (ClustererDoc trainDoc : trainDocs) { 
    if (count == 5) { 
     break; 
    } 
    count++; 
    examples.add(runPolicy(trainDoc, Math.pow(EXPERT_DECAY(iteration +1)))); 
} 

Я не понимаю, почему я получаю это из исключения памяти даже после предоставления требуемой конфигурации для очень небольшого количества данных (менее 2 МБ)

Есть ли способ, чтобы оптимизировать использование памяти?

Когда я просмотрел исходный код, я нашел несколько файлов, таких как demonyms.txt, gender.data.gz, inanimate.unigrams.txt, state-abbrevations.txt и т. Д. Нужно ли создавать файлы, указывающие медицинские объекты для обучения медицинской области, чтобы получить лучшую точность?

ответ

0

Это потому, что ваше пространство кучи превышено.

Любезно

-Xms512m -Xmx1152m -XX:MaxPermSize=256m -XX:MaxNewSize=256m 

взгляд на них в вашем язя один раз. И увеличивайте их, если необходимо.

+0

http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html –

+0

Посмотрите на ссылку для получения дополнительной информации –

 Смежные вопросы

  • Нет связанных вопросов^_^