alex_bn_lee

导航

【673】PyTorch —— 基础知识

Docs » PyTorch之60min入门教程 » 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 神经网络

 

posted on 2021-12-09 15:33  McDelfino  阅读(161)  评论(0)    收藏  举报