4.1 Tensor对象及其运算

Tensor对象是一个维度任意的矩阵,但Tensor中所有元素的数据类型必须一致。Torch包含的数据类型与普通编程语言的数据类型类似,包含浮点型、有符号整型和无符号整型,这些类型既可以定义在CPU上,也可以定义在GPU上。在使用Tensor数据类型时,可通过dtype属性指定数据类型,通过device指定设备(CPU或者GPU)。

通过device指定在GPU上定义变量后,可在终端通过nvidia-smi命令查看显存占用。同时Torch还支持在CPU和GPU之间复制变量。

对Tensor执行算术运算符的运算时,是两个矩阵对应元素的运算。torch.mm执行矩阵乘法计算。

此外,还有一些具有特定功能的函数,如torch.clamp起的是分段函数的作用,可用于去掉矩阵中过小或者过大的元素;torch.round可以将小数部分化整;torch.tanh用来计算双曲正切函数,该函数可以将数值映射到(0,1)之间。

除了直接从ndarray或list类型的数据中创建Tensor外,PyTorch还提供了一些函数可直接创建数据(这类函数往往需要提供矩阵的维度)。torch.arange与Python内置的range的使用方法基本相同,其第3个参数是步长。torch.linspace第3个参数指定返回的个数,torch.ones返回全1矩阵、torch.zeros返回全0矩阵。

torch.rand返回[0,1]之间均匀分布采样的元素所组成的矩阵,torch.randn返回从正态分布采样的元素所组成的矩阵。torch.randint返回指定区间均匀分布采样的随机整数所生成的矩阵。