小编mat*_*eek的帖子

PyTorch 中的 SGD 优化器实际上是梯度下降算法吗?

我正在尝试比较神经网络的 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)
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)

我对优化器的理解是,SGD 优化器实际上执行小批量梯度下降算法,因为我们一次向优化器提供一批数据。因此,如果我们将batch_size参数设置为所有数据的大小,代码实际上会对神经网络进行梯度下降。

我的理解正确吗?

python gradient-descent pytorch

6
推荐指数
1
解决办法
2409
查看次数

标签 统计

gradient-descent ×1

python ×1

pytorch ×1