一个纯净的自动微分框架—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 ...
随机推荐
- 如何从ElasticSearch迁移到OpenSearch?
本文分享自天翼云开发者社区<如何从ElasticSearch迁移到OpenSearch?>,作者:刘****鑫 在云搜索产品的选择中,如果用户倾向于开源软件,并且更喜欢免费提供高级功能的工 ...
- 在 GoRoute 中使用 NavigationBar
前言 在App 中通常会把主要的几个页面放在下方icon,让使用者能够方便操作,这个元件在flutter 中称为BottomNavigationBar. 而GoRouter则是Flutter 官方所提 ...
- sublime3 教程 比较好的
因为不让转载 所以列出 地址http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html 关键技术要点: Ctrl + ←/→进行 ...
- raspberry 修改static ip地址,ssh 可以访问到
raspberry 修改static ip地址,ssh 可以访问到 转载连接 http://www.jianshu.com/p/2c2a8291728d 如果我们希望直接不通过电脑直接连接登录到树莓派 ...
- java hashmap 浅出深入
简介 一般集合和map的底层原理实现可能会被面试官问到. 参考链接 https://www.bilibili.com/video/BV1oE411n7ug?from=search&seid=4 ...
- ylmf Win11电脑图标盾牌如何取消的问题
近期有部分细心的雨林木风官网用户发现win11系统桌面上的图标变得不一样了,上面会带有盾牌,那么有没有什么方法可以将这些盾牌去除呢?还不知道应该如何操作的朋友们,可以参考以下操作哦,希望对你有所帮助. ...
- ServletContext与静态变量(static)的区别,数据库连接池放在哪里
这种是放在static中,03_用servlet.request和Druid技术写登录案例 java--数据库连接池--druid_基本使用 这是放在ServletContext中,使用Servl ...
- Golang笔记之Redis
本文首发于公众号:Hunter后端 原文链接:Golang笔记之Redis 这一篇笔记主要介绍 Golang 连接和使用 Redis,以下是本篇笔记目录: 目录 1.安装模块 2.连接 Redis 3 ...
- Vasya and Golden Ticket CodeForces - 1030C
https://vjudge.net/contest/356807#problem/A 题意: 给一段数字,问是否能拆分成若干段,使得各段的数字和相等 思路: 暴力 搜索 串的长度最大100,单个段数 ...
- [笔记]中国剩余定理(CRT) & 扩展中国剩余定理(exCRT)
中国剩余定理(CRT) P1495 [模板]中国剩余定理(CRT)/ 曹冲养猪 对于线性同余方程组: \[\begin{cases} x\equiv a_1\pmod{b_1}\\ x\equiv a ...