一个纯净的自动微分框架—autograd
技术背景
自动微分是一个在深度学习等计算领域非常常用的一个工具了,其核心原理就是基于链式法则的求导。但是如果只是为了使用一个自动微分的功能,不做深度学习的话,去安装一个庞大的深度学习框架,学习成本是很高的,尤其是在个别硬件环境下,配置还相当的复杂。如果只是想使用一个自动微分的功能,可以考虑本文所介绍的autograd自动微分计算框架。
autograd实例
autograd是一个基于numpy或者scipy接口的自动微分计算框架,使用cpu环境即可,安装也非常简单,直接使用pip install autograd即可完成环境部署。在使用方式上,跟普通的numpy模块的区别就是,此处的numpy函数要从autograd中进行导入,例如如下示例:
from autograd import numpy as np
from autograd import grad, elementwise_grad
def f(x):
return 2 * x
def f1(x):
return np.sum(2 * x)
g = elementwise_grad(f)
h = grad(f1)
x = np.arange(10).astype(np.float32)
print (g(x))
print (h(x))
# [2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
# [2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
这里我们用了一个非常简单的函数\(y=2x\)来进行测试,那么得到的预期结果应该是\(y'=2\),所以程序输出没有问题。当然,这里使用的是逐元素的求导,总体的求导就是把逐元素的求导相加。这就是一个简单的在cpu和numpy框架下进行自动微分计算的实例。
总结概要
本文介绍了一个可以基于CPU和numpy的自动微分计算框架。如果只是需要使用自动微分计算的功能,就可以直接在CPU环境下简便的部署,快捷的完成环境搭建。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/autograd-cpu.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
一个纯净的自动微分框架—autograd的更多相关文章
- PyTorch 自动微分示例
PyTorch 自动微分示例 autograd 包是 PyTorch 中所有神经网络的核心.首先简要地介绍,然后训练第一个神经网络.autograd 软件包为 Tensors 上的所有算子提供自动微分 ...
- (转)自动微分(Automatic Differentiation)简介——tensorflow核心原理
现代深度学习系统中(比如MXNet, TensorFlow等)都用到了一种技术——自动微分.在此之前,机器学习社区中很少发挥这个利器,一般都是用Backpropagation进行梯度求解,然后进行SG ...
- MindSpore多元自动微分
技术背景 当前主流的深度学习框架,除了能够便捷高效的搭建机器学习的模型之外,其自动并行和自动微分等功能还为其他领域的科学计算带来了模式的变革.本文我们将探索如何用MindSpore去实现一个多维的自动 ...
- pytorch学习-AUTOGRAD: AUTOMATIC DIFFERENTIATION自动微分
参考:https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html#sphx-glr-beginner-blitz-autog ...
- PyTorch自动微分基本原理
序言:在训练一个神经网络时,梯度的计算是一个关键的步骤,它为神经网络的优化提供了关键数据.但是在面临复杂神经网络的时候导数的计算就成为一个难题,要求人们解出复杂.高维的方程是不现实的.这就是自动微分出 ...
- PyTorch 自动微分
PyTorch 自动微分 autograd 包是 PyTorch 中所有神经网络的核心.首先简要地介绍,然后将会去训练的第一个神经网络.该 autograd 软件包为 Tensors 上的所有操作提供 ...
- MindSpore:自动微分
MindSpore:自动微分 作为一款「全场景 AI 框架」,MindSpore 是人工智能解决方案的重要组成部分,与 TensorFlow.PyTorch.PaddlePaddle 等流行深度学习框 ...
- 分子动力学模拟之基于自动微分的LINCS约束
技术背景 在分子动力学模拟的过程中,考虑到运动过程实际上是遵守牛顿第二定律的.而牛顿第二定律告诉我们,粒子的动力学过程仅跟受到的力场有关系,但是在模拟的过程中,有一些参量我们是不希望他们被更新或者改变 ...
- 数值计算:前向和反向自动微分(Python实现)
1 自动微分 我们在<数值分析>课程中已经学过许多经典的数值微分方法.许多经典的数值微分算法非常快,因为它们只需要计算差商.然而,他们的主要缺点在于他们是数值的,这意味着有限的算术精度和不 ...
- Nancy总结(一)Nancy一个轻量的MVC框架
Nancy是一个基于.net 和Mono 构建的HTTP服务框架,是一个非常轻量级的web框架. 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT 和 PATC ...
随机推荐
- Java开发笔记(一百五十二)Date工具的时间格式
Java开发经常要把当前时间转为字符串,比如"2020-07-08 22:59:48"这样,此时会用到格式化工具SimpleDateFormat,该工具通过下列字符表示不同的时间单 ...
- 前端开发系列033-基础篇之Event事件
本文介绍JavaScript事件相关的知识点,主要包括事件流.事件处理程序.事件对象(event)以及常见事件类型和事件委托等相关内容. 在网页开发涉及的三种基础技术(HTML \ CSS \ Jav ...
- SciTech-Mathmatics - Advanced Linear Algebra: 矩阵乘法 的 四种理解方式 + 向量 的空间&基、坐标&坐标变换 + Eigenvalue Decompression(特征值分解) + SVD(奇异值分解, Singular Value Decomposition)
SciTech-Mathmatics - Advanced Linear Algebra(高等线性代数): 矩阵乘法 的 四种理解方式 矩阵乘法有四种理解方式: 线性方程组视角:将矩阵看作行向量与向量 ...
- SciTech-EECS-Circuits-JTAG协议背景知识简介与FTDI的FT4232H配成USB to JTAG TAP(MPSSE)使用实例
MPSSE Application Example: http://ftdichip.cn/Support/SoftwareExamples/MPSSE.htm MPSSE: AN_129 FTDI ...
- POLIR-Society-Organization-Psychology-Emotions情绪 : The 6 Types of Basic Emotions and Their Effect on Human Behavior
EMOTIONS > The 6 Types of Basic Emotions and Their Effect on Human Behavior By Kendra Cherry, MSE ...
- SciTech-Mathmatics-Multiplication Product = Multiplier × Multiplicand, Properties{Closure, Commutative, Associative, Distributive, Identity, Zero}
https://byjus.com/maths/multiplication/ https://byjus.com/about-us/ Proof of the Divison Algorithm h ...
- 地图绘制软件 Wonderdraft
挺不错的 https://www.wonderdraft.net/ 更多相关 https://www.zhihu.com/question/27061982 Azgaar's Fantasy Map ...
- mysql连接数,druid的连接数
my.ini // 注册数据库驱动 Class.forName(driver); DriverManager.getConnection(url, user, password); 按max_con ...
- new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析
逃逸分析(Escape Analysis)是一种静态程序分析技术,主要用于判定对象的可见范围(Visibility)与生命周期(Lifetime).该技术是现代即时编译器实现局部化优化.提升内存使用效 ...
- ESP32-WIFI-WebUI控制LED
ESP32-WIFI-WebUI控制LED 逻辑流程(A = ESP32,B = 客户端) A:将 ESP32 配置为 AP 模式,开启 Wi-Fi 热点并作为 HTTP 服务器运行. B:电脑或手机 ...