如何在PyTorch中用torch.ones和torch.ones_like创建Ones张量

1,076 阅读2分钟

简介

在这篇文章中,我们将看到如何通过使用torch.ones()和torch.ones_like()函数在PyTorch中创建1张量。one张量是所有值都是1的张量,如下图所示。

该图显示了大小分别为4×4和4×3的2-D ones张量。

PyTorch 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.]]])