我正在努力比较神经网络的SGD和GD算法的收敛速度.在PyTorch中,我们经常使用SGD优化器,如下所示.
train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True)
optimizer = torch.optim.SGD(model.parameters(), lr=0.001)
for epoch in range(epochs):
running_loss = 0
for input_batch, labels_batch in train_dataloader:
input = input_batch
y_hat = model(input)
y = labels_batch
L = loss(y_hat, y)
optimizer.zero_grad()
L.backward()
optimizer.step()
running_loss += L.item()
我对优化器的理解是,SGD优化器实际上执行小批量梯度下降算法,因为我们一次向优化器提供一批数据.因此,如果我们将batch_size参数设置为所有数据的大小,代码实际上会对神经网络进行梯度下降.
我的理解正确吗?