pytorch基本知识—主要轮子简介

深度学习框架背后的设计核心基本都是张量和计算图,PyTorch也不例外,以下会依次简单介绍下这些给力的轮子~~之后会慢慢更新每个轮子的食用方法

Tensor

Tensor,中文名张量,Theano、 TensorFlow、 PyTorch和MXNet中重要的数据结构。张量这一术语起源于力学,是一个非常重要的数学工具,有兴趣的可以自行了解。从工程角度讲,可简单地认为它就是一个数组,且支持有效的科学计算。它可以是一个数(标量)、一维数组(向量)、二维数组(矩阵)或更高维的数组(高阶数据)。

Tensor和numpy的ndarrays类似,但PyTorch的tensor支持GPU加速。Tensor和 numpy的数组间的互相操作非常容易且快速。Tensor有一个骚操作,它本身不支持的操作,可以先转为numpy数组处理,之后再转回Tensor。

Autograd

Autograd ,自动微分,深度学习的算法本质上是通过反向传播求导数, PyTorch的Autograd模块实现了此功能。在Tensor上的所有操作,Autograd都能为它们自动提供微分,避免手动计算导数的要杂过程。

autograd .Variable是Autograd中的核心类,它简单封装了Tensor, 并支持几乎所有Tensor的操作。Tensor在被封装为Variable之后,可以调用它的 .backward实现反向传播,自动计算所有梯度。

Variable主要包含三个属性。
data : 保存Variable所包含的Tensor。
grad : 保存data对应的梯度,grad也是个Variable, 而不是Tensor, 它和data的形状—样。
grad fn : 指向一个Function对象,这个Function用来反向传播计算输入的梯度,具体细节会在第3章讲解。
(0.4.0版本已经将 Variable 和 Tensor合并,统称为 Tensor)

神经网络

Autograd实现了反向传播功能,但是直接用来写深度学习的代码在很多情况下还是较为复杂, torch.nn是专门为神经网络设计的模块化接口。nn构建于Autograd之上,可用来定义和运行神经网络。nn.Module是nn中最重要的类,可以把它当作一个网络的封装,包含网络各层定义及forward方法,调用forward(input)方法,可返回前向传播的结果。

数据加载与预处理

在深度学习中数据加载及预处理是非常复杂繁琐的,PyTorch提供了一些可极大简化和加快数据处理流程的工具。同时,对于常用的数据集,PyTorch也提供了封装好的接口供用户快速调用,这些数据集主要保存在torchvision中。

你可能感兴趣的:(深度学习)