PyTorch学习系列(六)——自动求导

各种深度学习框架大大简化了研究人员的工作量,这主要归功于它们的自动求导功能。如果不借助于这些深度学习框架,我们不仅需要实现网络的前向过程,而且还要推导网络在各层的梯度表达式以实现反向过程。这是非常费时的,而且极易出错。

PyTorch提供了包torch.autograd用于自动求导。在前向过程中,PyTorch会构建计算图,每个节点用Variable表示,边表示由输入节点到输出节点的函数(torch.autograd.Function对象)。Function对象不仅负责执行前向计算,在反向过程中,每个Function对象会调用.backward()函数计算输出对输入的梯度,然后将梯度传递给下一个Function对象。

torch.autograd.Variable

见博客 PyTorch学习系列(三)——Tensor 和 Variable 中关于Variable的介绍。

torch.autograd.Function

Function和Variable一样,是autograd的重要组成部分,每个在Variable上执行的操作都会生成一个Function对象。

属性(成员变量)

  • saved_tensors: 传给forward()的参数,在backward()中会用到。
  • needs_input_grad:长度为 :attr:num_inputs的bool元组,表示输出是否需要梯度。可以用于优化反向过程的缓存。
  • num_inputs: 传给函数 :func:forward的参数的数量。
  • num_outputs: 函数 :func:forward返回的值的数目。
  • requires_grad: 布尔值,表示函数 :func:backward 是否永远不会被调用。

成员函数

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值