У меня есть вопрос относительно мини-пакетирования, который используется в примере train_textcat.py
Основной цикл обучения выглядит так:
for i in range(n_iter):
losses = {}
# batch up the examples using spaCy's minibatch
batches = minibatch(train_data, size=compounding(4., 32., 1.001))
for batch in batches:
texts, annotations = zip(*batch)
nlp.update(texts, annotations, sgd=optimizer, drop=0.2,
losses=losses)
with textcat.model.use_params(optimizer.averages):
# evaluate on the dev data split off in load_data()
scores = evaluate(nlp.tokenizer, textcat, dev_texts, dev_cats)
Я размышлял, почему все партии мини-пакета потребляются за одно целое, а не по одному пакету за итерацию основного цикла? Следующий код должен объяснить, что я имею в виду.
# batch up the examples using spaCy's minibatch
batches = minibatch(train_data, size=compounding(4., 32., 1.001))
for i, texts, annotations in zip(range(n_iter),*batch):
losses = {}
nlp.update(texts, annotations, sgd=optimizer, drop=0.2, losses=losses)
with textcat.model.use_params(optimizer.averages):
# evaluate on the dev data split off in load_data()
scores = evaluate(nlp.tokenizer, textcat, dev_texts, dev_cats)
Заранее спасибо!
Ваше окружение
- версия spaCy: 2.0.12
- Платформа: Windows-10-10.0.14393-SP0
- Версия Python: 3.6.5
- Модели: de