ptorch 求导

如果输出是一个标量的话,就是对输入Variable的每一个元素求偏导,所以直接使用out.backward()不加参数,然后在输入的Variable里面使用.grad方法,就返回一个和输入的Variable大小一样的Tensor,里面装着out对于每一个元素求偏导数的数值

相当于把输入Variable的每一个元素看成变量,这就是一个多变量的函数,求偏导需要对每一个变量求,有多少个变量就有多少个导数,所以求导的形状和输入一样

如下:

import torch
from torch.autograd import Variable
a=Variable(torch.Tensor([2,3]),requires_grad=True)
b=a+3
c=b*3
out=c.mean()
out.backward()
print("a.data")
print(a.data)
print("b.data")
print(b.data)
print("c.data")
print(c.data)

print("out.data")
print(out.data)
print(out.data.item())

输出:
在这里插入图片描述

而对于输出是一个矩阵,导数是矩阵中每一个元素对输入中的求导的和,比如 输入是x,里面有四个元素,输出是y,也有四个元素
y对于x的倒数就是y中的每一个元素对于x的导数的和
如下:

import torch
from torch.autograd import Variable as V
x = torch.Tensor([[1,2],[3,4]])
x=V(x,requires_grad=True)
y=V(torch.zeros(2,2))
y[0,0]=4*x[0,0]+3*x[0,1]
y[0,1]=3*x[0,1]
y[1,0]=3*x[1,0]+10*x[0,1]
y[1,1]=x[1,1]
y.backward(torch.ones(2,2))
print(y,x.grad)

输出:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值