《PyTorch深度学习实践》(1)

2020-06-06  本文已影响0人  天涯海角之路

主题

线性回归

总结

  1. pytorch的本质是计算图+自动求导

  2. 每个计算节点的结构被定下来需要哪些信息,这些信息作为参数传入

  3. loss最终是一个标量,才能反向传播

  4. 继承nn.Module后必须写forward()

  5. __call__()中调用forward(),使得Module是可调用对象,Pythonic风格。把输入数据以Tensor对象形式传入__call__(),返回输出数据的Tensor对象形式

  6. nn.MSELoss也是一个计算节点,与nn.Linear一样都是nn.Module的子类

  7. 优化器不是nn.Module的子类

criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

(1)优化器与Loss计算节点都在模型外建立。
(2)在模型外建立Loss计算节点的两个原因,一是要对该节点传入标签信息,二是方便在训练过程中更换Loss计算方式
(3) 在模型外建立优化器是因为要传入模型的优化参数,显然只有当模型实例化之后才能建立

  1. 更新模型参数的三段式
optimizer.zero_grad()
loss.backward()
optimizer.step()

PyTorch深度学习的步骤

  1. Prepare dataset
  2. Desgin model using Class:inherit from nn.Module
  3. Construct loss and optimizer:using PyTorch API
  4. Training cycle:forward、backward、update

1. Prepare dataset

  1. 输入数据的尺寸结构用mini-batch风格,一个维度是样本数n。即n*@,其中@是每个输入数据点的尺寸结构
  2. 不同维度的矩阵相乘,用广播机制复制数值。比如矩阵X的维度为(a * b * c * d),矩阵Y的维度为(c * d),XY乘积的结果矩阵维度为(a * b )
上一篇 下一篇

猜你喜欢

热点阅读