07+自动求导QA

1)为什么pytorch会默认累计梯度?

pytorch自己设计的,pytorch对内存管理不是很好。在我们反向传播的时候中间结果要在内存中存起来。

假设有一个批量,比较大,有时一次性算不出那个梯度。

这时候我们会将这个批量分成n个小批量,总共计算n次梯度并累加起来,就可以得到梯度了。

2)为什么深度学习中一般对标量求导而不是对矩阵或向量?

因为很多精度、损失函数在机器学习中都是一个标量。

如果向量loss不是标量,会很麻烦。比如深度很大的时候,loss会成为一个很大的矩阵,这样也没办法看的很直观。

3)为什么获取.grad()前需要backward()?

因为计算梯度是一件很贵的事情,除非一定说需要梯度的话,那么就先backward一下,在获取计算图中叶结点的梯度(grad)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值