时间:2021-05-22
前言
由于机器学习的基本思想就是找到一个函数去拟合样本数据分布,因此就涉及到了梯度去求最小值,在超平面我们又很难直接得到全局最优值,更没有通用性,因此我们就想办法让梯度沿着负方向下降,那么我们就能得到一个局部或全局的最优值了,因此导数就在机器学习中显得非常重要了
基本使用
tensor.backward()可以及自动将梯度累加积到tensor.grad上
x = torch.ones(3,3)print(x.requires_grad)x.requires_grad_(True)print(x.requires_grad)y = x**2/(x-2)out = y.mean()print(x.grad)out.backward()print(x.grad)False
True
None
tensor([[-0.3333, -0.3333, -0.3333],
[-0.3333, -0.3333, -0.3333],
[-0.3333, -0.3333, -0.3333]])
requires_grad 可以获取到tensor是否可导
requires_grad_() 可以设置tensor是否可导
grad 查看当前tensor导数
上面的公式很简单,程序含义
1/4 * (x**2) / (x-2)
求x的导数,基本公式在下方
注意点
我们使用.mean后得到的是标量,如果不是标量会报错
x = torch.ones(3, requires_grad=True)y = x * 2y = y * 2print(y)tensor([4., 4., 4.], grad_fn=<MulBackward0>)y.backward()print(x.grad)报错
RuntimeError: grad can be implicitly created only for scalar outputs
no_grad()作用域
如果想要某部分程序不可导那么我们可以使用这个
x = torch.ones(3, requires_grad=True)y = x * 2print(y.requires_grad)with torch.no_grad(): y = y * 2 print(y.requires_grad)True
False
总结
这一章我们使用pytorch里面的backward,自动实现了函数的求导,帮助我们在后面面对很多超大参数量的函数的时候,求导就变得游刃有余
上节
PyTorch使用教程-安装与基本使用
到此这篇关于PyTorch 导数应用的使用教程的文章就介绍到这了,更多相关PyTorch 导数应用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
自动求导机制是每一个深度学习框架中重要的性质,免去了手动计算导数,下面用代码介绍并举例说明Pytorch的自动求导机制。首先介绍Variable,Variabl
前言本文参考PyTorch官网的教程,分为五个基本模块来介绍PyTorch。为了避免文章过长,这五个模块分别在五篇博文中介绍。Part3:使用PyTorch构建
使用Pytorch来编写神经网络具有很多优势,比起Tensorflow,我认为Pytorch更加简单,结构更加清晰。希望通过实战几个Pytorch的例子,让大家
听说pytorch使用比TensorFlow简单,加之pytorch现已支持windows,所以今天装了pytorch玩玩,第一件事还是写了个简单的CNN在MN
大部分的pytorch入门教程,都是使用torchvision里面的数据进行训练和测试。如果我们是自己的图片数据,又该怎么做呢?一、我的数据我在学习的时候,使用