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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部