Каков размер пакета по умолчанию для Pytorch SGD? - PullRequest
1 голос
/ 05 февраля 2020

Что делает Pytorch SGD, если я передаю данные целиком и не указываю размер пакета? Я не вижу каких-либо "стохастий c" или "случайности" в этом деле. Например, в следующем простом коде я передаю все данные (x, y) в модель.

optimizer = torch.optim.SGD(model.parameters(), lr=0.1)  
for epoch in range(5):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

Предположим, есть 100 пар данных (x, y), то есть x_data и y_data каждая имеет 100 элементов.

Вопрос: Мне кажется, что все 100 градиентов рассчитываются до одного обновления параметров. Размер "mini_batch" - 100, а не 1. Так что нет случайности, я прав? Во-первых, я думаю, что SGD означает случайным образом выбрать 1 точку данных и рассчитать ее градиент, который будет использоваться в качестве аппроксимации истинного градиента из всех данных.

1 Ответ

1 голос
/ 05 февраля 2020

Оптимизатор SGD в PyTorch - это просто градиентный спуск. Часть stocasti c происходит от того, как вы обычно передаете случайное подмножество ваших данных по сети за раз (например, мини-пакет или пакет). Код, который вы опубликовали, пропускает весь набор данных в каждую эпоху перед тем, как выполнить backprop и запустить оптимизатор, так что вы действительно просто выполняете регулярный градиентный спуск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...