spacy-pytorch-transformers: loss = 0 постоянно во время обучения
Я использую spacy 2.1.8
а также spacy-pytorch-transformers 0.4.0
обучить текстовый классификатор. Мой код сильно вдохновлен их примером, но модель ничего не изучает, что, похоже, вызвано постоянным нулевым проигрышем. Минимальный (не-) рабочий пример моего кода выглядит следующим образом:
nlp = spacy.load("en_pytt_xlnetbasecased_lg")
textcategorizer = nlp.create_pipe("pytt_textcat", config={"exclusive_classes": True, "architecture": "softmax_last_hidden"})
for label in labels:
textcategorizer.add_label(label)
nlp.add_pipe(textcategorizer, last=True)
optimizer = nlp.resume_training()
for epoch in range(num_of_epochs):
np.random.shuffle(train)
losses = Counter()
for step, batch in enumerate(minibatch(train, size=batch_size)):
optimizer.pytt_lr = 0.005
texts, cats = zip(*batch)
_, cats = preprocessed_labels_to_categories_for_training_and_eval(cats)
nlp.update(texts, cats, sgd=optimizer, losses=losses, drop=0.1)
Я уже дважды и трижды проверил, что соответствующие переменные, такие как cats
а также texts
, содержат допустимые и правильные значения.
Что мне не хватает?