二、pytorch之数值微分

数值微分

1.requires_grad属性

每个张量有一个属性 requires_grad(默认为false,可以根据x.requires_grad_(True)方法来改变),设置为True,就会开始跟踪tensor的所有操作,完成后,可以调用.backward()自动计算所有梯度,并且梯度累积到.grad属性中

eg1
    x=t.ones(5,3,requires_grad=True)#初始化张量的时候设置属性
    y=x+2#因为y是由x变化而来,所以y已经有了grad_fn属性(此时用y产生别的张量,仍会不断保持记录)
    z=y*y*3
    out=z.mean()
    out.backward()#向后传播。因为out为一个标量,这个out.backward()等同于out.backward(torch.tensor(1.))
    x.grad#得到了d(out)/dx
eg2
    x=t.rand(3,requires_grad=True)
    y=x*2
    while y.data.norm()<1000:#y的L2范数
                y=y*2
    print(y)

2backward()函数

当out为标量时候不需要加参数=参数为t.tensor(1.)
当out为1N的列向量时候,参数为t.tensor([k1,k2,k3,Kn])含义为:
在这里插入图片描述当out为N
N矩阵的时候参数为t.tensor([[],[],…])也是一个N*N的矩阵,

3 with t.no_grad()

将不想保持跟踪的部分放到 with t.no_grad():代码块中(其中涉及到的张量会自动放弃全部的requires_grad属性)

with t.no_grad():
        y=x+2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值