2016-07-24 58 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 +。*」,「」); 返回基地; } –