首页 > 其他 > 详细

关于Tensor的概念

时间:2021-05-12 20:52:53      阅读:16      评论:0      收藏:0      [点我收藏+]

在整个PyTorch框架中,所有的神经网络本质上都是一个outograd package(自动求导工具包)

  autograd package提供了一个对Tensors上所有的操作进行自动微分的功能。

关于torch.Tensor

  •   torch.Tensor 是整个package中的核心类,如果将属性.requires_grad设置为Ture,它就自动的追踪在这个类上定义的所有造作。当代吗要进行反向传播的时候,支架调用.backward()就可以自动计算所有的梯度。在这个Tensor上的所有梯度将被累加进属性.grad中。
  • 若果想终止一个Tensor在计算图中的追踪回溯,只需要执行.detach()就可以将该Tensor从计算图中撤下,在未来的回溯计算中也不会在计算该Tensor。
  • 处理.detach(),如果想终止对计算图的回溯,也就是不在进行方向传播求导数的过程,也可以采用代码块的方式with torch.no_grad();这种方式非常适用对模型进行预测的时候,因为预测阶段不再需要对梯度进行计算。

关于torch.Function:

  • Function类是和Tensor 类同等重要的一个核心类,他和Tensor共同创建了一个完整的类,每一个Tensor拥有一个.grad_fn属性,代表引用率那个具体的Function创建了该Tensor.
  • 若果某个张量Tensor是用户自定义的,则其对应的grad_fn is None.
import torch


x1=torch.ones(3,3)
print(x1)


x=torch.ones(2,2,requires_grad=True)
print("x=",x)
y=x+2
print(y)

z=y*y*3
out=z.mean()
print(z,out)
print(x.grad_fn)
print(y.grad_fn)
print(z.grad_fn)


关于这些方法.require_grad_():该方法可以原地改变Tensor的属性.requires_grad的值。如果没有主动设定默认False.
a=torch.randn(2,2)
a=((a*3)/(a-1))
print(a.requires_grad)
a.requires_grad_(True)
print(a.requires_grad)
b=(a*a).sum()
print(b)
print(b.grad_fn)

 

关于Tensor的概念

原文:https://www.cnblogs.com/jacobshuo/p/14760399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!