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
相关推荐
小王爱学人工智能3 分钟前
OpenCV的图像金字塔
人工智能·opencv·计算机视觉
困鲲鲲21 分钟前
Flask 核心基础:从 路由装饰器 到 __name__ 变量 的底层逻辑解析
python·flask
北京地铁1号线28 分钟前
Qwen-VL(阿里通义千问视觉语言模型)模型架构和损失函数介绍
人工智能·语言模型·自然语言处理
njxiejing31 分钟前
Python NumPy安装、导入与入门
开发语言·python·numpy
阿豪337 分钟前
2025 年职场转行突围:除实习外,这些硬核证书让你的简历脱颖而出(纯经验分享)
大数据·人工智能·经验分享·科技·信息可视化·产品经理
阿杜杜不是阿木木41 分钟前
开始 ComfyUI 的 AI 绘图之旅-Stable Diffusion图生图之局部重绘(Inpaint)和扩图(Outpaint)(三)
人工智能·ai·ai作画·aigc·图生图
阿杜杜不是阿木木1 小时前
开始 ComfyUI 的 AI 绘图之旅-Stable Diffusion图生图(二)
人工智能·ai·ai作画·aigc·图生图
Rhys..1 小时前
Python&Flask 使用 DBUtils 创建通用连接池
开发语言·python·mysql
Just_Paranoid1 小时前
【Python Tkinter】图形用户界面(GUI)开发及打包EXE指南
python·gui·tkinter·pyinstaller