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

1. Pytorch的基本单元,tensor,本质上和numpy的操作类似;不同的主要在与可以自动计算微分和梯度(Autograd);

2. 每个tensor的requires_grad设置为True时,就能够自动计算梯度;操作时,只能修改枝叶变量的requires_grad;

3. Pytorch中建立神经网络的基本步骤:

  1) 在Net(nn.Module)类的__init__中定义网络的基本结构(几层conv,几层fc全连接层),输入数据格式;

  2) 在forward中定义每层结构的池化和激发函数

  3) 定义Loss Function(criterion = nn.CrossEntropyLoss)和优化方法(optim.SGD)

  3) 如果要使用GPU进行计算,需要将net,以及输入数据通过.to(device)的方式送给GPU

    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

4. Pytorch的神经网络训练步骤:

  在每个epoch中

  1) 循环获得一个batch的训练数据

  2) optimizer.zero_grad()将梯度缓存置零

  3) 使用forward,获得网络结果 output = net(input)

  4)   计算结果与目标的差别 loss = criterion(output, label)

  5)  反向传播梯度 loss.backward()

  6)  优化并更新 optimizer.step()

05-21 05:45