python中backward函数_pytorch backward 函数
import torch
a=torch.linspace(-100,100,10,requires_grad=True)
s=torch.sigmoid(a)
c=torch.relu(a)
c.backward()
# 出错信息: grad can be implicitly created only for scalar outputs (只有当输出为标量时,梯度才能被隐式的创建)
对于输出时标量的情况:
import torch
a=torch.linspace(-100,100,10,requires_grad=True)
c=torch.relu(a).sum()
c.backward() # 根据链式法则自动计算叶子结点的梯度,requires_grad=true 的变量
c # tensor([ 0.0000, ... , 100.0000], grad_fn=)
c.grad_fn # 输出: # 是Functions 实例,非leaf variabls 才有。
# SumBackward0 是求和运算的反向传播算法
c.grad_fn.next_functions # ((, 0),) # grad_fn 中有next_functions 连接
# pytorch 创建动态计算图
显式创建梯度:
import torch
a=torch.linspace(-100,100,10,requires_grad=True)
s=torch.sigmoid(a)
c=torch.relu(a)
c.backward(torch.autograd.Variable(torch.ones(10),requires_grad=True))
c.grad_fn #
backward :
// loss.backward() 和 torch.autograd.backward(loss) 相同
torch.autograd.backward(
tensors, #用于计算梯度的tensor
grad_tensors=None, #显式定义梯度
retain_graph=None, # 在backward之后,pytorch会把计算图销毁,要重复调用backward 就需要设置为True
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
