简介
在这篇文章中,我们将看到如何通过使用torch.ones()和torch.ones_like()函数在PyTorch中创建1张量。one张量是所有值都是1的张量,如下图所示。
该图显示了大小分别为4×4和4×3的2-D ones张量。
使用Torch.ones()的PyTorch Ones Tensors
在PyTorch中,通过使用torch.ones函数,可以非常容易地创建带有所有1的张量。让我们通过几个例子来更详细地了解这个函数。在开始之前,让我们导入PyTorch库,如下图所示
在[0]:
import torch;
例子 - 1:用torch.ones()创建二维张量
在第一个例子中,我们将生成大小为3×5的1张量。为此,我们在 torch.ones 函数中以列表形式传递这个大小,如下所示。
In [1]:
ones_tensor = torch.ones(size = [3,5])
ones_tensor
输出[1]:
tensor([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
我们也可以用一个元组代替列表来传递大小,如下图所示:
在[2]中:
ones_tensor = torch.ones(size = (3,5))
ones_tensor
Out[2]:
tensor([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
例子 - 2 : 用特定的数据类型创建Ones张量
torch ones函数的默认数据类型是float。这在上面的例子中是可以看到的,这些例子中有小数的one。但是我们可以使用dtype参数来明确指定数据类型。
在下面的例子中,我们使用的是int类型的值,产生的都是int类型的one,即没有小数。
In[3]:
ones_tensor = torch.ones(size = (3,5), dtype =int)
ones_tensor
输出[3]:
tensor([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]])
例子 - 3 : 用Torch.ones()创建3维的一张表
在这个例子中,我们将在PyTorch中生成3-D ones张量,如下所示。
在[4]中:
ones_tensor = torch.ones(size = (2,3,5), dtype =int)
ones_tensor
输出[4]:
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]]])
用PyTorch的one张量 torch.ones_like()
在PyTorch中,torch.ones_like()函数被用来创建与另一个参考张量大小相同的张量。这个函数消除了获取另一个张量的大小,然后创建这个大小的1张量的两步过程。
例子 - 1 : 用torch.ones_like()创建二维张量
让我们首先用随机值创建一个张量。我们将使用这个张量的大小来创建1张量。我们把这个张量的名字传递给torch.ones_like函数。
In[5]:
random_tensor = torch.rand(size=(4,5))
random_tensor
Out[5]:
tensor([[0.5019, 0.3582, 0.6476, 0.0707, 0.1487],
[0.9490, 0.7027, 0.8373, 0.0666, 0.0776],
[0.9029, 0.8233, 0.6871, 0.0676, 0.0342],
[0.0643, 0.7627, 0.4676, 0.9771, 0.6908]])
在[6]中:
ones_like_tensor = torch.ones_like(random_tensor)
ones_like_tensor
输出[6]:
tensor([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
例子-2:用torch.ones_like()创建3维张量
让我们再次生成一个大小为2x4x5的三维随机值张量,然后在torch.ones_like函数中使用它。
在[7]中:
random_tensor = torch.rand(size=(2,4,5))
random_tensor
Out[7]:
tensor([[[0.5540, 0.2965, 0.7656, 0.0864, 0.4719],
[0.1797, 0.8056, 0.5731, 0.3665, 0.7524],
[0.7091, 0.5366, 0.6332, 0.8776, 0.0760],
[0.1010, 0.5353, 0.9416, 0.2458, 0.8791]],
[[0.8621, 0.0030, 0.5289, 0.6757, 0.2340],
[0.5413, 0.6108, 0.5478, 0.5954, 0.1434],
[0.6445, 0.6780, 0.4488, 0.3309, 0.0727],
[0.2652, 0.6528, 0.6589, 0.6072, 0.5976]]])
在[8]中:
ones_like_tensor = torch.ones_like(random_tensor)
ones_like_tensor
Out[8]:
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.]]])