使用Pytorch自动计算梯度

使用Pytorch自动计算梯度

torch 包内为我们提供了很多有用的函数,让我们无需手动计算梯度:

python 复制代码
import torch

x=torch.tensor([1.,2.,3.,4.])

x.requires_grad_(True)
y=2*torch.dot(x,x)
# tensor(60., grad_fn=<MulBackward0>)

print(x.grad)
# None

y.backward()

print(x.grad)
# tensor([ 4.,  8., 12., 16.])

x.requires_grad_(True) 是为了告诉 torch ,我需要对 x 计算梯度。因为(对于一个有上万/亿参数的函数)计算梯度是非常消耗算力的,所以 torch 默认不会计算梯度,需要我们通过 requires_grad_(True) 显示声明。

但在实践过程中,我们不可能只取一个 x 的值(一个向量)来决定接下来应该如何调整运动轨迹。

如果我们选三个 x 的值,就得到三个梯度:

python 复制代码
import torch

x1 = torch.tensor([1., 2., 3., 4.])
x2 = torch.tensor([1., 3., 3., 1.])
x3 = torch.tensor([5., 2., 1., 4.])

x1.requires_grad_(True)
y1 = 2 * torch.dot(x1, x1)
y1.backward()
print(x1.grad)
# tensor([ 4.,  8., 12., 16.])

x2.requires_grad_(True)
y2 = 2 * torch.dot(x2, x2)
y2.backward()
print(x2.grad)
# tensor([ 4., 12., 12.,  4.])

x3.requires_grad_(True)
y3 = 2 * torch.dot(x3, x3)
y3.backward()
print(x3.grad)
# tensor([20.,  8.,  4., 16.])

但是,我们只需要一个梯度,来决定接下来的运动轨迹。可以选择将梯度相加,或者取平均值之类的方法,来得到一个统一的梯度。

放到数学上来说(数学意义),就是对于一个结果是向量的函数求导:

python 复制代码
import torch

x = torch.tensor([1., 2., 3., 4.])

x.requires_grad_(True)
y = 2 * x * x

print(y)
# tensor([ 2.,  8., 18., 32.], grad_fn=<MulBackward0>)

y.sum().backward()

print(x.grad)
kward0>)

y.sum().backward()

print(x.grad)
# tensor([ 4.,  8., 12., 16.])

我们通过 y.sum() 将函数的结果从向量压缩成标量,然后再求导,就获得了我们想要的梯度

相关推荐
console.log('npc')22 分钟前
Git 冲突与 AI 协助指南
前端·人工智能·git·大模型
LaughingZhu27 分钟前
Product Hunt 每日热榜 | 2026-09-05
人工智能·深度学习·神经网络·搜索引擎·百度
魔众31 分钟前
5 分钟用 AIGCPanel 部署阿里 SenseVoice,中粤日韩英语音识别 + 情感分析全搞定
人工智能·语音识别
xwz小王子36 分钟前
机器人的“最后一毫米”: 新加坡南洋理工大学Facet-0如何教会基础模型“感受”自己的动作?
大数据·人工智能·机器人
今天AI了吗37 分钟前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
benchmark_cc39 分钟前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
腾视科技-AI1 小时前
腾视科技AIBOX双版本重磅发布!本地安全与全球适配,解锁视频智能新可能
大数据·人工智能·科技·安全·大模型·腾视科技·ai算力盒
a1117761 小时前
基于 ROS 2 的 Franka Panda 机械臂视觉分拣系统
人工智能·开源
逍遥~1421 小时前
什么是工业级算力?算盘科技的核心能力解析
网络·人工智能·科技
硅谷秋水1 小时前
JEPA-WAM:基于联合嵌入世界建模的VLA策略学习
人工智能·机器学习·计算机视觉·语言模型·机器人