PyTorch 导数应用的使用教程

 更新时间:2020年08月31日 10:57:54   作者:YXHPY  
这篇文章主要介绍了PyTorch 导数应用的使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

由于机器学习的基本思想就是找到一个函数去拟合样本数据分布,因此就涉及到了梯度去求最小值,在超平面我们又很难直接得到全局最优值,更没有通用性,因此我们就想办法让梯度沿着负方向下降,那么我们就能得到一个局部或全局的最优值了,因此导数就在机器学习中显得非常重要了

基本使用

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 * 2
y = y * 2
print(y)
tensor([4., 4., 4.], grad_fn=<MulBackward0>)
y.backward()
print(x.grad)

报错

RuntimeError: grad can be implicitly created only for scalar outputs

v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward()
print(x.grad)
tensor([4.0000e-01, 4.0000e+00, 4.0000e-04])

no_grad()作用域

如果想要某部分程序不可导那么我们可以使用这个

x = torch.ones(3, requires_grad=True)
y = x * 2
print(y.requires_grad)
with torch.no_grad():
 y = y * 2 
 print(y.requires_grad)

True
False

总结

这一章我们使用pytorch里面的backward,自动实现了函数的求导,帮助我们在后面面对很多超大参数量的函数的时候,求导就变得游刃有余

上节

PyTorch使用教程-安装与基本使用

到此这篇关于PyTorch 导数应用的使用教程的文章就介绍到这了,更多相关PyTorch 导数应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何在django中运行scrapy框架

    如何在django中运行scrapy框架

    这篇文章主要介绍了如何在django中运行scrapy框架,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python开发之list操作实例分析

    python开发之list操作实例分析

    这篇文章主要介绍了python开发之list操作方法,结合实例形式分析了list操作的具体用法与相关注意事项,需要的朋友可以参考下
    2016-02-02
  • Django视图函数的具体使用

    Django视图函数的具体使用

    这篇文章主要介绍了Django视图函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python 列表常用方法超详细梳理总结

    python 列表常用方法超详细梳理总结

    这篇文章主要为大家介绍了Python中列表的几个常用方法总结,文中的示例代码讲解详细,对我们学习Python列表有一定帮助,需要的可以参考一下
    2022-03-03
  • Python构建机器学习API服务的操作过程

    Python构建机器学习API服务的操作过程

    这篇文章主要介绍了Python构建机器学习API服务的操作过程,通过本文的指导,读者可以学习如何使用Python构建机器学习模型的API服务,并了解到在实际应用中需要考虑的一些关键问题和解决方案,从而为自己的项目提供更好的支持和服务,需要的朋友可以参考下
    2024-04-04
  • python3实现读取chrome浏览器cookie

    python3实现读取chrome浏览器cookie

    这里给大家分享的是python3读取chrome浏览器的cookie(CryptUnprotectData解密)的代码,主要思路是读取到的cookies被封装成字典,可以直接给requests使用。
    2016-06-06
  • 解决python写的windows服务不能启动的问题

    解决python写的windows服务不能启动的问题

    使用py2exe生成windows服务在win7下可以正常运行,但是到了xp下面可以安装,但是无法启动
    2014-04-04
  • 详解Python nose单元测试框架的安装与使用

    详解Python nose单元测试框架的安装与使用

    本篇文章主要介绍了详解Python nose单元测试框架的安装与使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Python基础学习列表+元组+字典+集合

    Python基础学习列表+元组+字典+集合

    这篇文章主要介绍了Python基础学习列表+元组+字典+集合,文章接上一篇内容学习,主要针对python零基础的同学,感兴趣的话就学起来吧
    2022-05-05
  • 8个Python编程进阶常用技巧分享

    8个Python编程进阶常用技巧分享

    介绍 Python 炫酷功能的文章层出不穷,但是还有很多 Python 的编程小技巧鲜被提及,所以本文会试着介绍一些其它文章没有提到的小技巧,让我们一探究竟吧
    2023-07-07

最新评论