2016-07-24 60 views
0

我是利用deeplearning4j中的新功能。我正在包含标记和未标记数据的数据集上运行paragraphvector分类器,并获得结果。当我使用相同的配置再次在相同的数据集上运行它时,我会得到另一个结果!新的结果接近前一个,但它为什么会产生稍微不同的结果?!我的意思是,结果几乎不同,就像第一次运行时一样,它会检测并分配两个测试样本给我们的第一个类,第二次运行时,它将这两个样本或可能其中一个分配给另一个类。它通常只发生一两个或三个样本。也许我需要事先通知你,我们有三个班,他们都与癌症类型有关。 任何提示/帮助/建议将不胜感激。deeplearning4j中的段落插图

我使用了这样的配置如下:

paragraphVectors = new ParagraphVectors.Builder() 
.learningRate(0.2) 
.minLearningRate(0.001) 
.windowSize(2) 
.iterations(3) 
.batchSize(500) 
.workers(4) 
.stopWords(stopWords()) 
.minWordFrequency(10) 
.layerSize(100) 
.epochs(1) 
.iterate(iterator) 
.trainWordVectors(true) 
.tokenizerFactory(tokenizerFactory) 
.build(); 

回答

0

问题被证明是与标记生成器坏输入。

+0

感谢您的回复!我使用StemmingPreprocessor而不是CommonPreprocessor来处理标记化部分。你的意思是不好的输入是什么意思? –

+0

我也覆盖了StemminPreprocessor,如下所示将连续的数字转换为空格:@Override \t public String preProcess(String token){ token = token.toLowerCase(); String base = super.preProcess(token); base = base.replaceAll(“\\ d +。*”,“”); 返回基地; } –