Pytorch入门教程(一)

2017-11-15 Pytorch基础知识

Posted by koko on November 15, 2017

Pytorch入门教程

Pytorch基础

这一部分主要介绍Pytorch的处理对象以及操作。

Pytorch的两个操作对象

  • Tensor

首先介绍最基本的操作单元Tensor。

Tensor就是张量的英文,表示多维的矩阵,比如一维就是向量,二维就是一般的矩阵等等,Pytorch里面处理的单位就是一个一个的Tensor。

什么是张量? A.Zee 书中所说: A tensor is something that transforms like a tensor! 一个量, 在不同的参考系下按照某种特定的法则进行变换, 就是张量。

陈维桓先生的《微分流形初步》一书中的一段话:

张量的概念是 G.Ricci 在19世纪末提出的. G.Ricci 研究张量的目的是为几何性质和物理规律的表达寻求一种在坐标变换下不变的形式. 他所考虑的张量是如同向量的分量那样的数组, 要求它们在坐标变换下服从某种线性变换的规律. 近代的理论已经把张量叙述成向量空间及其对偶空间上的多重线性函数, 但是用分量表示张量仍有它的重要性, 尤其是涉及张量的计算时更是如此.

但其实简单解释来说

1.单个的数值叫Scalar。也就是一个数字。比如说250这样的自然数。也可以是实数。下同。 2.一维的数组叫Vector,也就是向量。比如 {a1,a2,a3……an}。这里a1,a2…的值都是Scalar。 3.二维的数组叫Matrix,也就是矩阵。 4.三维以上的都叫Tensor,也就是张量。

enter image description here

可以显示得到的矩阵的大小

enter image description here

这个和numpy很相似,同时tensor和numpy.array之间也可以相互转换,互相转换时使用的是torch.from_numpy函数。

enter image description here

tensor的运算也很简单,一般的四则运算都是支持的。

  • Variable

Variable提供了自动求导功能,也就是可以自动给你你要的参数的梯度。这里就是Pytorch和Numpy不一样的地方。

本质上Variable和Tensor没有区别,不过Variabel会放入一个计算图,然后进行前向传播,反向传播以及自动求导。

一个Variable里面包含着三个属性,data,grad和creator,其中creator表示得到这个Variabel的操作,比如乘法或者加法等等,grad表示方向传播的梯度,data表示取出这个Variabel里面的数据。

enter image description here

这是一个简单计算图的例子。