Autograd

1.计算微分并标量输出

前向传播+反向传播计算叶子节点的微分值

import torch

x=torch.ones(2)
#x=[1,1]
x.requires_grad=True
#只有叶子结点的属性值可以被更新
z=4*x
#[4,4]
#求出范式
y= z.norm()
#tensor(5.6569, grad_fn=<CopyBackwards>)
#接下来调用输出节点的backward()函数对整个图进行反向传播,求出微分值
y.backward()
#print(x.grad)
#求出x的微分值,tensor([2.8284, 2.8284])
#z.grad与y.grad的值都没有改变,因为都不是叶子结点

2.非标量输出

import torch

z=torch.ones(2,1)
X=torch.Tensor([[2,3],[1,2]])
#X作为输入的叶子结点
X.requires_grad=True

y=X.mm(z)
#矩阵相乘输出y,print(y)
#tensor([[5.],
#       [3.]], grad_fn=<MmBackward>)

#此时调用backward()函数,需要传入一个形状和y一样的全为1的向量
y.backward(torch.ones(2,1))
#print(X.grad)
#tensor([[1., 1.],
#        [1., 1.]])
#对于本例的z,y1=x1+x2,y2=x3+x4,因此y关于X的微分正确
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值