先谢谢了。 我正在DeepLearning4j中使用Word2Vec。
如何清除Word2Vec中的vocab缓存。这是因为每次重新加载Word2Vec时,我都希望它在一组新的单词模式上进行重新训练。就目前而言,尽管更改了输入训练文件,但似乎以前的一组单词模式的词汇仍然存在,并且得到相同的结果。
我尝试重置模型,但是它不起作用。代码:-
Word2Vec vec =新的Word2Vec.Builder() .minWordFrequency(1) .iterations(1) .layerSize(4) .seed(1) .windowSize(1) .iterate(iter) .tokenizerFactory(t) .resetModel(true) .limitVocabularySize(1) .build();
任何人都可以帮忙吗?
答案 0 :(得分:0)
如果您想重新训练(这称为 training ),我了解您只是想完全忽略先前学习的模型(词汇,单词向量等)。为此,您应该创建另一个Word2Vec对象,并使其适合新数据。您应该为 SentenceIterator 和 Tokenizer 类使用其他实例。您的问题可能是更改输入训练文件的方式。
如果只更改 SentenceIterator ,即:
SentenceIterator iter = new CollectionSentenceIterator(DataFetcher.getFirstDataset());
Word2Vec vec = new Word2Vec.Builder()
.iterate(iter)
....
.build();
vec.fit();
vec.wordsNearest("clear", 10); // you will see results from first dataset
SentenceIterator iter2 = new CollectionSentenceIterator(DataFetcher.getSecondDataset());
vec = new Word2Vec.Builder()
.iterate(iter2)
....
.build();
vec.fit();
vec.wordsNearest("clear", 10); // you will see results from second dataset, without any first dataset implication
如果您运行两次代码,并且在两次执行之间更改了输入数据(比如说A,然后是B),那么您应该不会得到相同的结果。如果是这样,则意味着您的模型使用输入数据A和B学习了相同的东西。
如果要更新训练(这称为推断),我的意思是使用先前学习的模型和新数据来更新此模型,那么您应该使用dl4j示例中的this example。