Код: Выделить всё
loss = loss_fnc(samples)
model.optim.zero_grad()
loss.backward()
model.optim.step()
Код: Выделить всё
loss_sum = 0
for k_batch in range(0, len(samples), batch_size):
samples_batch = samples[k_batch:k_batch + batch_size]
loss = loss_fnc(samples_batch)
loss_sum += loss*len(samples_batch)
model.optim.zero_grad()
loss.backward()
model.optim.step()
loss_comp = loss_sum/len(samples)
Теперь я сталкиваюсь с проблемой, заключающейся в том, что модель больше не сходится в моем эталонном примере. при использовании пакетного обучения. В обоих случаях выборки уже упорядочиваются случайным образом перед обучением.
Поскольку меня интересует только уменьшение необходимого объема памяти для вычислений, и прежде чем я попробую что-нибудь еще, есть ли способ действительно провести идентичное обучение при использовании пакетов вместо «всего сразу»? Я попытался изменить функцию так, чтобы пакетно вычислялись только потери, а этап оптимизации выполнялся в конце, но, похоже, у меня это не сработало.
Как я поймите, использование DataLoader ничего не изменит в этом поведении.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-batches
Мобильная версия