Pytorch.tensor 相关用法

Torch.tensor.backward()方法的使用举例

理解optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理

Autograd: 自动求导

python 复制代码
import torch

a=torch.randn(2,2) # tensor默认requires_grad=False
a=((a*3)/(a-1))
print(a.requires_grad)
print(a.grad_fn) # leaf tensor的.grad_fn属性为None

b = torch.tensor([4.0, 3.0, 2.0], requires_grad=True)
print(b.requires_grad)
print(b.grad_fn) # leaf tensor的grad_fn属性为None

c = (a*a).sum()
print(c.requires_grad) # 由于a.requires_grad=False,所以c.requires_grad=False
print(c.grad_fn) # 由于自变量tensor,也即a的requires_grad=False,作用在其上的运算不会被跟踪,所以c.grad_fn=None

a.requires_grad_(True) # 通过内置requires_grad_()方法改变其requires_grad属性
print(a.requires_grad) # True
d = (a*a).sum()
print(d.requires_grad) # 由于a.requires_grad=True,所以d.requires_grad=True
print(d.grad_fn) # 由于a.requires_grad=True,所以d.grad_fn有内容

# https://blog.csdn.net/wangweiwells/article/details/101223420
# 但requires_grad属性为True并不意味着可以得到对其的gradient,还要看其是否为leaf tensor
e1 = torch.rand(10, requires_grad=True) + 2
print(e1.requires_grad) # True
print(e1.is_leaf) # False,因为e是由加法运算得到的,所以不是leaf tensor,不能得到对e的梯度
# 但所有requires_grad=False的Tensor都为leaf Tensor(同时也不能得到对它们的梯度)
e2 = torch.rand(10) + 2
print(e2.requires_grad) # False
print(e2.is_leaf) # True
e3 = e2.sum()
print(e3.requires_grad) # False
print(e3.grad_fn) # None
e3.backward() # 由于e3.grad_fn=None,所以此处会报错

# 评估模型等情况下,我们不需要跟踪计算历史或使用内存,此时可用torch.tensor.detach()或以下方法
with torch.no_grad():
    print(d.requires_grad) # True
    f = (a*a).sum()
    print(f.requires_grad) # False
相关推荐
初心丨哈士奇4 小时前
Python 四大基础容器|列表篇
python
tmlx3I0815 小时前
高光谱拼接算法(六)RANSAC 误匹配剔除
人工智能·算法·机器学习
Mininglamp_27185 小时前
Claude Code 封禁中国开发者之后:本地 AI 编程工具的替代方案实测
开发语言·人工智能·windows·开源软件·ai-native
硅谷秋水5 小时前
World Engine:迈向自动驾驶的后训练时代
人工智能·深度学习·机器学习·计算机视觉·语言模型·自动驾驶
RobinDevNotes5 小时前
PentAGI:全自主 AI 渗透测试代理系统
人工智能
明理的信封5 小时前
AI 基础设施的“去 Python 化“:Rust 与 C# 的两条替代路径
人工智能·python·rust
优橙教育5 小时前
Rano AI智能体技术架构深度解析
人工智能
Tiansan66665 小时前
郑州AI问答推广公司:如何用AI提升转化率
人工智能·郑州ai问答推广公司
龙亘川5 小时前
开源本地 AI 智能体网关 OpenClaw 深度实践:架构解析、全场景部署与自动化落地指南
人工智能·架构·开源·openclaw
霍格沃兹测试开发学社测试人社区5 小时前
为企业提供专业、灵活、高效的一体化测试支持
人工智能