Stanford nlp 避免记忆错误的训练神经网络模型

Stanford nlp 避免记忆错误的训练神经网络模型,stanford-nlp,Stanford Nlp,我正在尝试使用网络训练一个NER模型。我有一个所需格式的文件,大小为6GB。配置文件: usePrevSequences=true useClassFeature=true useTypeSeqs2=true useSequences=true wordShape=chris2useLC useTypeySequences=true useDisjunctive=true noMidNGrams=true serializeTo=ner-model50.ser.gz maxNGramLeng=6

我正在尝试使用网络训练一个NER模型。我有一个所需格式的文件,大小为6GB。配置文件:

usePrevSequences=true
useClassFeature=true
useTypeSeqs2=true
useSequences=true
wordShape=chris2useLC
useTypeySequences=true
useDisjunctive=true
noMidNGrams=true
serializeTo=ner-model50.ser.gz
maxNGramLeng=6
useNGrams=true
usePrev=true
useNext=true
maxLeft=1
trainFile=trainData
map=word=0,answer=1
useWord=true
useTypeSeqs=true
按照文档中的建议,每个句子都用空行分隔。因此,当我使用
mx25g
运行命令时:

java -mx25g -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop config.prop
我得到了一个错误:

线程“main”java.lang.OutOfMemoryError中出现异常:java堆空间

从库的开始,建议将文件拆分为多个文件,以防内存错误

为此,您需要使用
trainFileList
选项而不是
trainFile
选项来更改配置文件。现在我有多个文件,每个文件大约250MB。运行同一命令时出现以下错误:

线程“main”java.lang.OutOfMemoryError中出现异常:超出GC开销限制


因此,拆分文件似乎没有什么帮助。你认为拆分成更小的文件会有帮助吗?或者这无关紧要?有没有办法解决这个问题?任何见解都是有用的。提前谢谢。

我也面临着与你相同的问题,我的一位大四学生建议我使用 -Xmx而不是-mx根据您的计算机RAM和交换大小指定最大堆大小。
如果使用IOB编码,还可以减少实体类或合并标记的数量,因为使用的空间随着实体类的增加呈指数增长

java-Xmx**g-cp stanford-ner.jar edu.stanford.nlp.ie.crf.crfclassizer-prop ner.prop

这对我有用