发布时间:2026/8/18 14:18:43
Python可微分编程初步 文章目录一元标量函数多元函数一元数组函数可微分计算Differentiable Computing或可微分编程Differentiable Programming是近年来计算机科学和科学计算领域最重要的范式转变之一。它的核心思想是将计算机程序变成可微分的从而可以通过梯度下降等优化方法从输出结果反推并优化输入参数或程序内部的逻辑。不用想就知道这种观念的直接来源是深度学习但其应用领域却足以泛化到整个科学计算和工程领域。一元标量函数PyTorch支持可微分计算只需在创建张量时开启【requires_grad】即可自动计算梯度。例如对于y x 2 yx^2yx2而言d y d x 2 x \frac{\mathbf dy}{\mathbf dx}2xdxdy​2x。现令x 3 x3x3则其PyTorch可以依次计算出importtorch xtorch.tensor(3.0,requires_gradTrue)yx**2print(fy 的值:{y.item()})# y 的值: 9.0y.backward()print(fx 的梯度 (dy/dx):{x.grad.item()})# x 的梯度 (dy/dx): 6.0多元函数下面考虑多元函数f ( x , y ) x 2 sin ⁡ y e x y f(x,y) x^2\sin ye^{xy}f(x,y)x2sinyexy其偏导数为∂ f ∂ x 2 x sin ⁡ y y e x y ∂ f ∂ y x 2 cos ⁡ y x e x y \begin{aligned} \frac{\partial f}{\partial x}2x\sin yye^{xy}\\ \frac{\partial f}{\partial y}x^2\cos yxe^{xy}\\ \end{aligned}∂x∂f​∂y∂f​​2xsinyyexyx2cosyxexy​当x 1 , y π 2 x1, y\frac{\pi}{2}x1,y2π​时f 1 e π 2 ≈ 5.81 f x 2 π 2 e π 2 ≈ 9.56 f y e π 2 ≈ 4.81 \begin{aligned} f1e^\frac{\pi}{2}\approx5.81\\ f_x2\frac{\pi}{2}e^\frac{\pi}{2}\approx9.56\\ f_ye^\frac{\pi}{2}\approx4.81 \end{aligned}ffx​fy​​1e2π​≈5.8122π​e2π​≈9.56e2π​≈4.81​PyTorch的自动微分仍旧可以完美运行xtorch.tensor(1.0,requires_gradTrue)ytorch.tensor(torch.pi/2,requires_gradTrue)f(x**2)*torch.sin(y)torch.exp(x*y)f.backward()print(fdf/dx:{x.grad.item():.4f})# df/dx: 9.5563print(fdf/dy:{y.grad.item():.4f})# df/dy: 4.8105一元数组函数回到y x 2 yx^2yx2如果x xx是个数组那么在Python的计算规则中y yy也是同样维度的数组。此时把求导操作视作∂ y ∂ x \frac{\partial y}{\partial x}∂x∂y​那么形式上的展开差不多是∂ ( y 1 , y 2 , ⋯ ) ∂ ( x 1 , x 2 , ⋯ ) \frac{\partial (y_1, y_2, \cdots)}{\partial(x_1, x_2,\cdots)}∂(x1​,x2​,⋯)∂(y1​,y2​,⋯)​有些意义不明感觉最后求出来的是个矩阵。但是如果y i y_iyi​求和那么就会得到s ∑ i y i ( x i ) s\sum_i y_i(x_i)s∑i​yi​(xi​)此时∂ s ∂ ( x 1 , x 2 , ⋯ ) \frac{\partial s}{\partial(x_1, x_2,\cdots)}∂(x1​,x2​,⋯)∂s​的意义却相对明确即s x i ∂ s ∂ x i ∂ y i ∂ x i s_{x_i} \frac{\partial s}{\partial x_i}\frac{\partial y_i}{\partial x_i}sxi​​∂xi​∂s​∂xi​∂yi​​。按照这个逻辑可以用PyTorch继续做反向传播示例如下xtorch.tensor([1.0,2.0,3.0],requires_gradTrue)yx**2# y 是一个向量 [1, 4, 9]# 注意直接 y.backward() 会报错lossy.sum()loss.backward()print(fx 的梯度:{x.grad})# x 的梯度: tensor([2., 4., 6.])

相关新闻

2026/8/18 14:18:43

【maya】在maya中对物体创建locator定位器做跟踪

用途:灯光跟随 or 对角色某个顶点跟踪 1、创建 locator又名定位器,有多种创建方式,可以在创建下拉菜单中创建,也可直接在绑定面板创建 方法1方法22、maya使用情况(一) 有一个情景,角色在跑步…

2026/8/18 15:39:10

DLSS Swapper 使用指南:三步实现游戏 DLSS 版本自由升降级

DLSS Swapper 使用指南:三步实现游戏 DLSS 版本自由升降级 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你有没有过这样的时刻:新驱动装好、新游戏更新完,画面却开始闪烁、甚至直接…

2026/8/17 10:49:52

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 6:58:27

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/18 0:02:05

Qwen3.8-27B本地部署实战:17GB内存运行270亿参数大模型

1. 这篇文章真正要解决的问题 你是否曾对动辄需要上百GB显存才能运行的百亿参数大模型望而却步?是否觉得在个人电脑上部署一个功能强大的语言模型是天方夜谭?最近,通义千问团队发布的 Qwen3.8-27B 模型,宣称仅需 17GB 内存即可在本…

2026/8/18 0:02:05

ME3169 36V,8A,180KHz 恒压Buck DC-DC 转换器

概述ME3169 是一款180KHz,PWM 模式恒压Buck DC-DC 转换器,8V 到36V 宽工作电压范围,低纹波,内置低导通电阻功率MOS。ME3169 内置环路补偿电路,可以减少外围元器件数量。内部设计有恒压环路,可以通过外部电阻…

2026/8/17 15:07:41

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/17 17:27:06

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/18 7:12:40

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…