Pytorch — реализация идентичного обучения с использованием пакетов или без него.Python

Программы на Python
Ответить
Anonymous
 Pytorch — реализация идентичного обучения с использованием пакетов или без него.

Сообщение Anonymous »

У меня есть модель в pytorch, которая очень хорошо сходится с эталонным примером при использовании стандартного процесса обучения, в котором оптимизатор обучается на всех образцах одновременно:

Код: Выделить всё

loss = loss_fnc(samples)

model.optim.zero_grad()
loss.backward()
model.optim.step()
Теперь модель должна обучаться на задачах с более интенсивным использованием памяти (больше выборок, больший размер входных данных). Я подумал, что это поможет тренироваться пакетно. Для этого я использую довольно стандартный метод с циклом for:

Код: Выделить всё

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(replay_samples)
Теперь, когда я пропускаю часть обучения в этом методе и вычисляю только потери, результирующий loss_comp идентичен тому, который вычисляется для всех выборок одновременно (как в методе выше) ). Естественно, при пакетном обучении loss_comp отличается, поскольку модель меняется в пакетном режиме.
Теперь я столкнулся с проблемой: модель больше не сходится с моим эталонным примером при использовании пакетного обучения. обучение. В обоих случаях выборки уже упорядочиваются случайным образом перед обучением.
Поскольку меня интересует только уменьшение необходимого объема памяти для вычислений и прежде чем я попробую что-нибудь еще, есть ли способ действительно ли обучение будет одинаковым при использовании пакетов вместо «всего сразу»? Я попытался изменить функцию, чтобы пакетно вычислялись только потери, а этап оптимизации выполнялся в конце, но, похоже, у меня не получилось.
Как я поймите, использование DataLoader ничего не изменит в этом поведении.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-batches
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»