Pytorch官方文档(六)翻译版本

torch.narrow

作用:

  • 使原Tensor变小,变窄,产生的Tensor与原Tensor共用一个内存。

参数:

  1. input,要缩小的Tensor。
  2. dim,沿着什么维度去缩小,0代表缩小行,1代表缩小列。
  3. start,开始维度。
  4. length,到最后一个维度的距离。

例子:

>>> x = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> torch.narrow(x, 0, 0, 2) # 第一个参数是x,第二个参数0代表行缩小,第三个参数0代表从索引为0的地方开始,第四个参数代表输出的Tensor共两行。
tensor([[ 1,  2,  3],
        [ 4,  5,  6]])
>>> torch.narrow(x, 1, 1, 2)
tensor([[ 2,  3],
        [ 5,  6],
        [ 8,  9]])

torch.nonzero

作用:

  • 返回输入Tensor的非零值对应下标集合。
  • as_tuple为False时,如果输入有n维,则得到的索引张量out是大小(z乘以n)(z×n),其中z是输入张量中非零元素的总数。
  • as_tuple为True时,

参数:

  1. input,输入的Tensor。
  2. out,(可选)包含下标的Tensor。

例子:

>>> torch.nonzero(torch.tensor([1, 1, 1, 0, 1]))
tensor([[ 0],
        [ 1],
        [ 2],
        [ 4]])
>>> torch.nonzero(torch.tensor([[0.6, 0.0, 0.0, 0.0],
                                [0.0, 0.4, 0.0, 0.0],
                                [0.0, 0.0, 1.2, 0.0],
                                [0.0, 0.0, 0.0,-0.4]]))
tensor([[ 0,  0],
        [ 1,  1],
        [ 2,  2],
        [ 3,  3]])
>>> torch.nonzero(torch.tensor([1, 1, 1, 0, 1]), as_tuple=True)
(tensor([0, 1, 2, 4]),)
>>> torch.nonzero(torch.tensor([[0.6, 0.0, 0.0, 0.0],
                                [0.0, 0.4, 0.0, 0.0],
                                [0.0, 0.0, 1.2, 0.0],
                                [0.0, 0.0, 0.0,-0.4]]), as_tuple=True)
(tensor([0, 1, 2, 3]), tensor([0, 1, 2, 3]))
>>> torch.nonzero(torch.tensor(5), as_tuple=True)
(tensor([0]),)

torch.reshape

作用:

  • 返回一个与输入Tensor数据相同,元素个数也相同,但形状特殊的Tensor。
  • 当参数为-1时,视为对输入Tensor进行平铺。

参数:

  1. input,输入Tensor。
  2. shape,新的形状。

例子:

>>> a = torch.arange(4.)
>>> torch.reshape(a, (2, 2))
tensor([[ 0.,  1.],
        [ 2.,  3.]])
>>> b = torch.tensor([[0, 1], [2, 3]])
>>> torch.reshape(b, (-1,))
tensor([ 0,  1,  2,  3])

torch.squeeze

作用:

  • 把输入的Tensor的维度大小为1的维度删除。
  • 例如,输入的Tensor为(A×1×B×C×1×D),输出的Tensor为(A×B×C×D)。
  • 得到的Tensor和输入的Tensor共享数据但不共享内存。

参数:

  1. input,输入的Tensor。
  2. dim,(可选)如果提供这个参数,就可以删除指定维度的维数1。
  3. out,(可选)输出的Tensor。

例子:

>>> x = torch.zeros(2, 1, 2, 1, 2)
>>> x.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x)
>>> y.size()
torch.Size([2, 2, 2])
>>> y = torch.squeeze(x, 0)
>>> y.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x, 1)
>>> y.size()
torch.Size([2, 2, 1, 2])

torch.unsqueeze

作用:

  • 返回一个新的Tensor,在原Tensor的基础上,在固定位置插入一个维度,维数为1。
  • 得到的Tensor和输入的Tensor共享一个数据。

参数:

  1. input,输入的Tensor。
  2. dim,插入单变量维度的索引。
  3. out,(可选)输出的Tensor。

例子:

>>> x = torch.tensor([1, 2, 3, 4]) # x.size()为torch.Size([4])
>>> torch.unsqueeze(x, 0)
tensor([[ 1,  2,  3,  4]]) # torch.Size([14])
>>> torch.unsqueeze(x, 1) 
tensor([[ 1],  # torch.Size([41])
        [ 2],
        [ 3],
        [ 4]])

torch.stack

参数:

  1. tensors,输入Tensor。
  2. dim,要插入的维度。必须介于0和连接张量(包括)的维数之间。
  3. out,(可选)输出Tensor。

例子:

>>> x = torch.randn(2, 1)
>>> x
>>> y = torch.randn(2, 1)
>>> y
>>> torch.stack([x, y], 0)
>>> torch.stack([x, y], 1)
>>> torch.stack([x, y], 2)
tensor([[1],
        [2]])
tensor([[3],
        [4]])
tensor([[[1],
         [2]],
        [[3],
         [4]]])
# torch.Size([2, 2, 1])
tensor([[[1],
         [3]],
        [[2],
         [4]]])
# torch.Size([2, 2, 1])
tensor([[[1, 3]],
        [[2, 4]]])
# torch.Size([2, 1, 2])
发布了14 篇原创文章 · 获赞 6 · 访问量 596

猜你喜欢

转载自blog.csdn.net/qq_38883844/article/details/104158608
今日推荐