目录
4.3:求最小值
下面讲一个小案例:使用自动微分机制配套使用SGD随机梯度下降来求函数最小值。
python
import torch
x = torch.tensor(0.0,requires_grad=True)
a = torch.tensor(1.0)
b = torch.tensor(-2.0)
c= torch.tensor(1.0)
optimizer = torch.optim.SGD(params=[x],lr=0.01)
print(optimizer)
def f(x):
result = a*torch.pow(x,2) +b*x +c
return(result)
for i in range(500):
optimizer.zero_grad()
y=f(x)
y.backward()
optimizer.step()
print("y=", y.data, ";", "x=", x.data)
结果如下:
powershell
SGD (
Parameter Group 0
dampening: 0
differentiable: False
foreach: None
fused: None
lr: 0.01
maximize: False
momentum: 0
nesterov: False
weight_decay: 0
)
y= tensor(0.) ; x= tensor(1.0000)