科学计算工具学习笔记 三

  1. 使用nn包将我们的模型定义为一系列的层。 nn.Sequential是包含其他模块的模块,并按顺序应用这些模块来产生其输出。每个线性模块使用线性函数从输入计算输出,并保存其内部的权重和偏差张量。 在构造模型之后,我们使用.to()方法将其移动到所需的设备。
  2. nn包还包含常用的损失函数的定义; 在这种情况下,我们将使用均方误差(MSE)作为我们的损失函数。 设置reduction=‘sum’,表示我们计算的是平方误差的“和”,而不是平均值; 这是为了与前面我们手工计算损失的例子保持一致, 但是在实践中,通过设置reduction='elementwise_mean’来使用均方误差作为损失更为常见。
  3. 前向传播:通过向模型传入x计算预测的y。模块对象重载了__call__运算符,所以可以像函数那样调用它们。 这么做相当于向模块传入了一个张量,然后它返回了一个输出张量。
  4. 反向传播之前将要更新的所有张量的梯度清零(这些张量是模型可学习的权重)
  5. 反向传播:计算模型的损失对所有可学习参数的导数(梯度)。在内部,每个模块的参数存储在requires_grad=True的张量中,因此这个调用将计算模型中所有可学习参数的梯度。
  6. 使用梯度下降更新权重。每个参数都是张量,所以我们可以像我们以前那样可以得到它的数值和梯度
  7. 在实践中,我们经常使用AdaGrad、RMSProp、Adam等更复杂的优化器来训练神经网络。
  8. 使用optim包定义优化器(Optimizer)。Optimizer将会为我们更新模型的权重。这里我们使用Adam优化方法;optim包还包含了许多别的优化算法。Adam构造函数的第一个参数告诉优化器应该更新哪些张量。
  9. 反向传播:根据模型的参数计算loss的梯度。
  10. 调用Optimizer的step函数使它所有参数更新。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gallant Hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值