pytorch基本组件

1.张量

张量(tensor)类似于numpy里的n维数组ndarray,用于存储和操作模型的输入和输出以及模型的参数,可以是标量(0维)、向量(1维)、矩阵(2维)或多维数组(3维或以上),区别在于张量可以在 GPU 上运行以加速计算。

构造一个简单的张量:

此外tensor还可以通过torch.from_numpy()函数和torch_tensor.numpy()函数与numpy中的数据相互转换。

torch.tensor函数的参数:

torch.tensor(data, dtype = None, device = None, requires_grad = False, pin_memory = False)

data为数据类型;dtype是生成的Tensor数据类型(不进行设置则根据输入的data的数据类型来决定);device默认为None,会在当前的设备上为生成的Tensor分配内存; requires_grad若设置为True,则可以计算梯度;pin_memory设置为True,则在固定内存中分配当前Tensor,不过只适用于CPU中的Tensor。

2.计算图

计算图是用于描述运算的有向无环图,图中节点表示数据(向量、张量等),边表示运算(包括加减乘除等)。计算图的好处在于使运算更加简洁,同时方便进行梯度求导。

如下图表示e=(a+b)*(b+1)的计算过程:

 pytorch中的计算图是动态图机制,在pytorch运行之前,不会去创建所谓的神经网络,这完全由python代码定义的forward函数来描述。即我们手工编写的forward函数就是pytorch前向运行的动态图。当代码执行到哪一句的时候,网络就运行到哪一步。

3.自动微分

autograd 包是 Pytorch 中所有神经网络的核心,为 Tensors 上的所有操作提供自动微分。

torch.Tensor 是包的核心类。如果将其属性 .requires_grad 设置为 True,则会开始跟踪针对 tensor 的所有操作。完成计算后,我们可以调用 .backward() 来自动计算所有梯度。该张量的梯度将累积到 .grad 属性中。还有一个类对于 autograd 实现非常重要那就是 Function。Tensor 和 Function 互相连接并构建一个非循环图,它保存整个完整的计算过程的历史信息。每个张量都有一个 .grad_fn 属性保存着创建了张量的 Function 的引用。

如果想计算导数,可以调用 Tensor.backward()。创建一个Tensor时,它的梯度为None,只有当调用backward()方法计算了梯度之后,这个属性才会变成一个tensor并且存放梯度值,并且这个值可以累加。

 

 4.pytorch的常用模块

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值