如何清除 DeepLearning4j Word2Vec 中的词汇缓存以便每次都重新训练

How to clear vocab cache in DeepLearning4j Word2Vec so it will be retrained everytime

提前致谢。 我在 DeepLearning4j 中使用 Word2Vec。

如何清除 Word2Vec 中的词汇缓存。这是因为我希望它在每次重新加载 Word2Vec 时都重新训练一组新的单词模式。现在,似乎前一组单词模式的词汇仍然存在,即使我更改了输入训练文件,我也得到了相同的结果。

我尝试重置模型,但没有用。代码:-

Word2Vec vec = new Word2Vec.Builder() .minWordFrequency(1) .迭代(1) .layerSize(4) .种子(1) .windowSize(1) .迭代(iter) .tokenizerFactory(t) .resetModel(真) .limitVocabularySize(1) .build();

有人可以帮忙吗?

如果你想重新训练(这叫做训练),我知道你只是想完全忽略以前学过的模型(词汇,词向量,...)。为此,您应该创建另一个 Word2Vec 对象并将其与新数据相匹配。您应该为 SentenceIteratorTokenizer 类 使用另一个实例。您的问题可能是您更改输入培训文件的方式。

如果你只是改变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 学到了相同的东西。

如果你想更新训练(这叫做推理),我的意思是使用以前学习的模型和新数据来更新这个模型,那么你应该使用this example 来自 dl4j 示例。