Что делает 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 точку данных и рассчитать ее градиент, который будет использоваться в качестве аппроксимации истинного градиента из всех данных.