【673】PyTorch —— 基础知识
Tensors(张量)
-
torch.empty():不初始化的构造
-
torch.rand():随机初始化的矩阵
-
torch.zeros():初始化矩阵全为 0
-
torch.tensor():直接通过数据构造
-
x.new_ones():基于已有tensor构造
-
torch.randn_like():基于已有tensor构造
-
x.size():获取维度信息
-
torch.view():改变tensor的大小或者形状
-
x.item():对于一个元素的tensor得到具体的value
-
x + y:直接相加
-
torch.add(x, y):直接相加
-
y.add_(x):直接相加,并赋值给 y
-
注意 任何使张量会发生变化的操作都有一个前缀 '_'。例如:x.copy_(y), x.t_()
-
Autograd(自动微分)
-
torch.Tensor 是包的核心类。如果将其属性 .requires_grad 设置为 True,则会开始跟踪针对 tensor 的所有操作。完成计算后,您可以调用 .backward() 来自动计算所有梯度。该张量的梯度将累积到 .grad 属性中。
-
要停止 tensor 历史记录的跟踪,您可以调用 .detach(),它将其与计算历史记录分离,并防止将来的计算被跟踪。
-
要停止跟踪历史记录(和使用内存),您还可以将代码块使用 with torch.no_grad(): 包装起来。在评估模型时,这是特别有用,因为模型在训练阶段具有 requires_grad = True 的可训练参数有利于调参,但在评估阶段我们不需要梯度。
-
还有一个类对于 autograd 实现非常重要那就是 Function。Tensor 和 Function 互相连接并构建一个非循环图,它保存整个完整的计算过程的历史信息。每个张量都有一个 .grad_fn 属性保存着创建了张量的 Function 的引用,(如果用户自己创建张量,则grad_fn 是 None )。
-
如果你想计算导数,你可以调用 Tensor.backward()。如果 Tensor 是标量(即它包含一个元素数据),则不需要指定任何参数backward(),但是如果它有更多元素,则需要指定一个gradient 参数来指定张量的形状。
-
.requires_grad:用来设置是否跟踪对应 tensor 的所有梯度
-
.backward():用来自动计算梯度,对于最后是一个数的,可以不用参数,如果最后是向量的话,需要添加一个向量的比例值
参考:pytorch中backward()函数详解 -
.grad_fn:属性保存着创建了张量的 Function 的引用
- .grad:张量的梯度将累积到 .grad 属性中
PyTorch 神经网络
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2020-12-09 【502】gensim实现Word2Vec