https://pytorch.org/tutorials/beginner/pytorch_with_examples.html

这篇博客主要是介绍了tensor的概念、求导的方法、autograd的使用。

Tensors

使用类似于 numpy的array ,Pytorch提供一系列关于Tensor的操作。Tensor记录计算图和梯度,也可以作为科学计算的工具。

  1. tensor.item() # 返回值
  2. a = torch.nn.Parameter(torch.randn(())) # 定义变量
  3. #定义可梯度的tensor
  4. a = torch.full((), 0.0, device=device, dtype=dtype, requires_grad=True)
  5. 注意:这两个a是有区别的,Parameter会自动绑定在网络的参数空间。

Autograd

定义地网络,继承 torch.nn.Module 模块,需要实现 forward方法
脚手架如下:

  1. import torch
  2. class Net(torch.nn.Module):
  3. def __init__(self):
  4. super().__init__()
  5. """
  6. 网络参数定义
  7. torch.nn.Parameter
  8. """
  9. def forward(self,x):
  10. """
  11. 使用网络对 输入进行操作
  12. """
  13. # 指定损失函数
  14. loss_fun = torch.nn.MSELoss(reduction='sum')
  15. # 指定求解器
  16. model = Net()
  17. optimizer = torch.optim.SGD(model.parameters(), lr=1e-6)
  18. for t in range(epcho):
  19. y_pred = model(x) # 预测
  20. loss = loss_fun(y_pred,y)
  21. if t%5 ==0:
  22. print(t,loss.item())
  23. optimizer.zero_grad() # 清零梯度
  24. loss.backward() # 计算梯度
  25. optimizer.step() #更新梯度