Если вы используете точно такой же код, как и связанный, такое поведение следует ожидать.
for itn in range(n_iter):
random.shuffle(TRAIN_DATA)
losses = {}
# batch up the examples using spaCy's minibatch
batches = minibatch(TRAIN_DATA, size=compounding(4.0, 32.0, 1.001))
for batch in batches:
texts, annotations = zip(*batch)
nlp.update(
texts, # batch of texts
annotations, # batch of annotations
drop=0.5, # dropout - make it harder to memorise data
losses=losses,
)
print("Losses", losses)
"Итерация" - это внешняя l oop: for itn in range(n_iter)
. А из примера кода вы также можете сделать вывод, что losses
сбрасывается при каждой итерации. Вызов nlp.update
будет фактически увеличивать соответствующую потерю в каждом вызове, т. Е. С каждым batch
, который он обрабатывает.
Так что да: потеря увеличивается в течение итерации для каждого обрабатываемого вами пакета. Чтобы проверить, действительно ли ваша модель что-то изучает, вам нужно проверить потери за итерации, подобно тому, как оператор print
в исходном фрагменте печатает только после циклического выполнения пакетов, а не во время.
Надеюсь, что помогает!