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
相关推荐
HuggingFace28 分钟前
Hugging Face 开源机器人 Reachy Mini 开启预定
人工智能
豌豆花下猫1 小时前
让 Python 代码飙升330倍:从入门到精通的四种性能优化实践
后端·python·ai
夏末蝉未鸣011 小时前
python transformers库笔记(BertForTokenClassification类)
python·自然语言处理·transformer
企企通采购云平台1 小时前
「天元宠物」×企企通,加速数智化升级,“链”接萌宠消费新蓝海
大数据·人工智能·宠物
超级小忍1 小时前
Spring AI ETL Pipeline使用指南
人工智能·spring
张较瘦_2 小时前
[论文阅读] 人工智能 | 读懂Meta-Fair:让LLM摆脱偏见的自动化测试新方法
论文阅读·人工智能
巴伦是只猫2 小时前
【机器学习笔记 Ⅲ】4 特征选择
人工智能·笔记·机器学习
好心的小明3 小时前
【王树森推荐系统】召回11:地理位置召回、作者召回、缓存召回
人工智能·缓存·推荐系统·推荐算法
weixin_418813873 小时前
Python-可视化学习笔记
笔记·python·学习
lishaoan773 小时前
使用tensorflow的线性回归的例子(十二)
人工智能·tensorflow·线性回归·戴明回归