Как очистить кэш Vabab в DeepLearning4j Word2Vec, чтобы он каждый раз проходил переподготовку - PullRequest
0 голосов
/ 24 сентября 2018

Заранее спасибо.Я использую Word2Vec в DeepLearning4j.

Как очистить кэш voabab в Word2Vec.Это потому, что я хочу, чтобы он переучивался на новом наборе слов каждый раз, когда я перезагружаю Word2Vec.На данный момент кажется, что словарь предыдущего набора шаблонов слов сохраняется, и я получаю тот же результат, даже если я изменил свой входной обучающий файл.

Я пытаюсь сбросить модель, но она не работает.Коды: -

Word2Vec vec = new Word2Vec.Builder () .minWordFrequency (1) .iterations (1) .layerSize (4) .seed (1) .windowSize (1) .iterate (iter) .tokenizerFactory(t) .resetModel (true) .limitVocabularySize (1) .build ();

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 25 сентября 2018

Если вы хотите переобучиться (это называется обучение ), я понимаю, что вы просто хотите полностью игнорировать предыдущую изученную модель (словарь, вектор слов, ...).Для этого вам нужно создать еще один объект 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.

Если вы хотите обновить обучение (это называется логический вывод ), я имею в виду использовать предыдущую изученную модель и новуюданные для обновления этой модели, тогда вы должны использовать этот пример из примеров dl4j.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...