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 小时前
我在 Anthropic ELI5 上加了5样东西,做成了更好用的 ELI5+
人工智能
东风破_5 小时前
《LangGraph Memory:为什么 Agent 需要 Checkpointer?》
人工智能
锋行天下5 小时前
LangGraph 同级节点之间修改数据先后问题
人工智能
2601_962078195 小时前
Python中calendar.weekday用法
python·编程技巧·calendar·日期处理·weekday
u1301305 小时前
AI 日报(2026年9月12日)
人工智能
东风破_5 小时前
《LangGraph Human-in-the-loop:Interrupt 如何让 Agent 等待人工确认》
人工智能
2601_962218615 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_966949655 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
智塑未来5 小时前
中文短剧出海翻译工具横评:VMEG AI、鬼手、Vozo AI、ElevenLabs怎么选?
人工智能
东风破_5 小时前
《LangGraph 条件路由与循环:如何让 Agent 自己决定下一步?》
人工智能