张量
PyTorch中的张量(Tensor
)与NumPy中的数组(ndarray
)十分相似。但是PyTorch中的张量可以利用GPU来加速计算,所以在一定程度上,可以使用PyTorch来替代NumPy进行科学计算。在进行所有的计算之前,我们必须能够创建相应的张量,PyTorch中提供了以下常用方法来创建张量,这些方法都位于torch
包下。
.tensor(data)
,直接从现有数据中创建一个张量,其中数据可以是列表、元组、NumPy数组等,PyTorch会始终复制data
中的数据而不是直接引用。.rand(*size, out=None)
,采用随机数初始化建立一个指定大小的张量,其中size
参数可以是若干整型数或者列表、元组,用来定义建立的张量的形状。.rand_link(input)
,用随机数创建一个形状与input
一致的新张量。.randn(*size, out=None)
,随机使用\( (0, 1) \)区间的值,即标准正态分布,来初始化指定形状的张量。.randn_like(input)
,随机使用\( (0, 1) \)区间的值初始化一个形状与input
相同的张量。.randint(low=0, high, size, out=None)
,随机使用\( [low, high) \)区间的整型值初始化一个形状为size
的张量。.randint_like(input, low=0, high)
,随机使用\( [low, high) \)区间的整型值初始化一个形状与input
相同的张量。.randperm(n)
,返回一个\( [0, n-1] \)的随机整型序列。.zeros(*size)
,返回一个形状为size
的全零张量。.zeros_like(input)
,返回一个形状与input
相同的全零张量。.ones(*size)
,返回一个形状为size
的全1张量。.ones_like(input)
,返回一个形状与input
相同的全1张量。.empty(*size)
,返回一个未初始化的形状为size
的张量。.empty_like(input)
,返回一个未初始化的形状与input
相同的张量。.full(size, value)
,返回一个形状为size
、使用value
填充的张量。.full_like(input, value)
,返回一个形状与input
相同、使用value
填充的张量。
其中常见的共用参数有以下这些:
dtype
,张量内个元素的类型。device
,定义采用CPU张量还是GPU张量。layout
,定义输出张量期望的布局,一般默认与输入张量相同。requires_grad
,是否在返回的张量上进行自动微分操作。pin_memory
,返回的张量是否定位在固定的内存区间中,只在CPU张量中起效。
除此之外,PyTorch还支持使用torch.from_numpy()
来从NumPy数组中导入形成一个张量。或者可以使用tensor.numpy()
将一个张量转换为NumPy数组。张量还可以像NumPy数组一样使用索引获取其中的元素,并且支持切片操作,例如t[:, 1]
。