在 PyTorch 中创建张量
什么是 Pytorch?
Pytorch 是一个基于 Python 的机器学习框架,主要用于科学计算和构建深度学习模型。
张量是机器学习和数据科学中一个流行的概念。张量是矩阵和向量的广义术语。简单来说,张量可以是任何东西——一个 n 维数组、一个向量或一个矩阵。在本文中,我们将探讨在 Pytorch 中创建张量的多种方法。
创建张量的方法
张量可以通过多种方法创建。下面列出了一些重要的方法。
使用 ones 创建张量
使用 zeros 创建张量
使用 arange 创建张量
使用 rand() 创建张量
使用 full() 创建张量
使用 linspace 创建张量
使用 randint() 创建张量
使用 eye() 方法创建张量
使用 tensor 方法创建张量
使用 complex 方法创建张量
作为第一步,在开始使用不同的创建张量的方法之前,我们必须首先导入 torch。
语法
#importing torch import torch
方法 1:使用 ones() 创建张量
使用 ones() 函数,创建的张量的所有元素都设置为 1。
让我们在 Python 编程中编写一段代码来使用 ones() 函数创建张量。
示例
#creating a tensor using ones() tensor_using_ones = torch.ones(4,4,5) #prints the created tensor print(tensor_using_ones)
输出
从下面的输出中我们可以看到,新创建的张量在形状 (4,4,5) 中的所有条目都设置为“1”。
tensor([[[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]], [[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]], [[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]], [[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]]])
方法 2:使用 zeros() 创建张量
我们使用 zeros() 函数来创建张量,其所有元素都设置为 0。使用此函数,值可以作为列表、元组或空值传递。张量可以通过这些方式中的任何一种创建。
使用 zeros() 函数,创建的张量所有元素都设置为 0。
示例
#creating a tensor using zeros() tensor_using_zeros = torch.zeros(4,4,5) #prints the created tensor print(tensor_using_zeros)
输出
从下面的输出中我们可以看到,新创建的张量在形状 (4,4,5) 中的所有条目都设置为“0”。
tensor([[[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]], [[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]], [[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]], [[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]])
方法 3:使用 arange() 创建张量 - 示例 1
arange() 函数用于创建一维 (1D) 张量。
语法
arange() 函数具有以下语法。
torch.arange(start,end,step-size)
其中,
start - 包含在内
end - 不包含在指定的形状中
我们在 Python 中编写代码以创建形状规格为 (5,30,2) 的一维张量。
示例
#creating a tensor using arange tensor_using_arange = torch.arange(5, 30,2) #prints the created tensor print(tensor_using_arange)
输出
这里,创建了一个一维张量,其初始元素为 5,结束元素为 29(即 30-1),公差(步长)为“2”。
tensor([ 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29])
方法 4:使用 arange() 创建张量 - 示例 2
让我们看看在 Pytorch 中创建张量的另一个示例,其中起始值为负数,即 -5,步长为“1”。
我们在 Python 中编写代码以创建形状规格为 (-5,25,1) 的一维张量。
示例
#creating a tensor using arange tensor_using_arange1 = torch.arange(-5, 25,1) #prints the created tensor print(tensor_using_arange1)
输出
这里,创建了一个一维张量,其初始元素为 -5,结束元素为 24(即 25-1),公差(步长)为“1”。
tensor([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24])
方法 5:使用 rand() 创建张量
在 Python 中创建张量的另一种常用方法是 rand() 方法。使用 rand() 方法将为指定的形状创建包含随机数的张量。
语法
rand() 方法的语法如下所示 -
torch.rand(shape)
示例
现在,为了理解使用 rand() 方法创建张量,让我们在 Python 编程中编写一段代码。
#creating a tensor using rand() tensor_using_rand = torch.rand(5, 5) #prints the created tensor print(tensor_using_rand)
输出
从下面的输出中我们可以看到,使用 rand() 方法创建了一个 5X5 形状的张量。张量内的元素是均匀分布的随机数。
tensor( [[0.2000, 0.6068, 0.3968, 0.6269, 0.8587], [0.1754, 0.5050, 0.8569, 0.5139, 0.9026], [0.2634, 0.6543, 0.3015, 0.6873, 0.2214], [0.9257, 0.6045, 0.4763, 0.5107, 0.7925], [0.7465, 0.0279, 0.4937, 0.0989, 0.8806]])
方法 6:使用 full() 创建张量
当希望张量中的元素为相同的数字时,可以使用张量中的 full() 方法。
语法
full() 方法的语法如下。
torch.full(size, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
其中,
fill_value - 是我们希望在张量中使用的值(相同的数字)。
假设,如果我们想创建一个所有元素都为相同数字(4)的张量。我们可以按照下面所示在 Python 编程中编写代码。fill_value 指定为 4。该值将是张量中的公共元素。
示例
#creating a tensor using full method tensor1 = torch.full((5,5,4) #prints the created tensor print(tensor1)
输出
对于上面的代码,我们给出一个 5X5 矩阵的张量,其中所有元素都为 4。
tensor([[4, 4, 4, 4, 4], [4, 4, 4, 4, 4], [4, 4, 4, 4, 4], [4, 4, 4, 4, 4], [4, 4, 4, 4, 4]])
方法 7:使用 linspace 创建张量
语法
Linspace() 方法具有以下语法。
linspace (start, stop, num, endpoint=True, retstep=False, dtype=None, axis=0)
其中,
low - 起始元素(包含在内)
high- 结束元素(包含在内)
num- 要在张量中生成的元素数量
示例
我们使用 Linspace() 方法创建一维 (1D) 张量。例如,我们在此处指定的形状为 (2,20,4)。在我们的示例中,2 是起始元素,20 是结束元素,4 是一维张量中存在的元素数量。
#creating a tensor using linspace tensor_using_linspace = torch.linspace(2, 20, 4) #prints the created tensor print(tensor_using_linspace)
输出
我们可以看到,上面的代码产生了下面的输出,其中创建了一个包含 4 个元素的一维张量。
tensor([ 2., 8., 14., 20.])
方法 8:使用 randint() 创建张量
randint() 方法创建一个张量,其中随机整数根据指定的形状生成。
语法
torch.randint(low,high,shape)
其中,
low - 起始元素(包含在内)
high- 结束元素(不包含在内)
shape - 张量的形状
示例
我们使用 randint() 方法编写 Python 代码,如下所示。
#creating a tensor using randint tensor_using_randint = torch.randint(10,100, (2,2)) #prints the created tensor print(tensor_using_randint)
输出
在下面的输出中,我们看到一个张量,其中随机元素在形状 (10,100,(5,5)) 之间生成。在这里,我们得到一个张量,其中随机元素在 10 和 99 之间,形状为 5X5 矩阵。
tensor([[71, 32, 56, 34, 21], [37, 71, 98, 63, 40], [41, 45, 27, 41, 50], [51, 42, 43, 71, 14], [87, 52, 77, 88, 85]])
方法 9:使用 eye() 创建张量
当我们想要创建一个二维张量,其中对角线上的元素为 1,其余元素为零时,eye() 方法很有用。
语法
torch.eye (shape)
现在,我们使用 eye() 方法编写 Python 代码。
示例 -1
#creating a tensor using eye tensor1_using_eye = torch.eye(4, 4) #prints the created tensor print(tensor1_using_eye)
输出
我们现在使用 eye() 方法创建了一个 2D 4X4 张量。
tensor([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])
让我们看看使用 eye 函数创建张量的另一个示例。
示例 -2
#creating a tensor using eye tensor2_using_eye = torch.eye(3) #prints the created tensor print(tensor2_using_eye)
输出
我们现在使用 eye() 方法创建了一个 2D 3X3 张量,如下面的输出所示。
tensor([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
方法 10:使用 Complex() 方法创建张量
complex() 方法是我们将要介绍的最后一种方法。它用于创建复数张量,其中创建的张量将同时具有虚部和实部。
语法
complex() 方法具有以下语法。
torch.complex(real part, imaginary part)
示例
complex() 方法的代码如下所示。
real_tensor = torch.rand(4,5) print(real_tensor) imaginary_tensor = torch.rand(4, 5) print(imaginary_tensor) tensor_using_complex = torch.complex(real_tensor, imaginary_tensor) #prints created tensor print(tensor_using_complex )
输出
因此,我们创建了一个复数张量,其虚部和实部形状为 4X5。
Tensor([[0.8284, 0.7833, 0.4952, 0.7634, 0.9098], [0.6373, 0.3428, 0.0352, 0.6095, 0.8066], [0.7292, 0.0703, 0.3846, 0.6653, 0.1924], [0.2920, 0.2676, 0.4669, 0.2841, 0.5974]]) tensor([[0.5236, 0.9037, 0.7622, 0.7044, 0.3362], [0.8543, 0.6088, 0.4882, 0.0563, 0.9318], [0.7075, 0.1176, 0.6272, 0.3318, 0.3751], [0.6317, 0.1482, 0.3772, 0.6941, 0.9126]]) tensor([[0.8284+0.5236j, 0.7833+0.9037j, 0.4952+0.7622j, 0.7634+0.7044j, 0.9098+0.3362j], [0.6373+0.8543j, 0.3428+0.6088j, 0.0352+0.4882j, 0.6095+0.0563j, 0.8066+0.9318j], [0.7292+0.7075j, 0.0703+0.1176j, 0.3846+0.6272j, 0.6653+0.3318j, 0.1924+0.3751j], [0.2920+0.6317j, 0.2676+0.1482j, 0.4669+0.3772j, 0.2841+0.6941j, 0.5974+0.9126j]])
结论
通过本文,我们学习了在 Pytorch 中创建张量的多种方法。我们建议您也查看我们的文章。