跳转至

在 Pytorch 中重塑张量

原文:https://www.geeksforgeeks.orgforming-a-tensor-in-py torch/

在本文中,我们将讨论如何在 Pytorch 中重塑张量。整形允许我们使用与 self 相同的数据和元素数量,但使用指定的形状来更改形状,这意味着它返回的数据与指定的数组相同,但指定的维度大小不同。

创建演示张量:

Python 代码来创建一个 1D 张量并显示它。

蟒蛇 3

# import torch module
import torch

# create an 1 D etnsor with 8 elements
a = torch.tensor([1,2,3,4,5,6,7,8])

# display tensor shape
print(a.shape)

# display tensor
a

输出:

torch.Size([8])
tensor([1, 2, 3, 4, 5, 6, 7, 8])

方法 1:使用重塑()方法

此方法用于将给定的张量重塑为给定的形状(更改尺寸)

语法:tensor.resform([行,列])

在哪里,

  • 张量是输入张量
  • row 表示重新整形的张量中的行数
  • column 表示变形张量中的列数

示例 1: 将一维张量重塑为二维张量的 Python 程序。

蟒蛇 3

# import torch module
import torch

# create an 1 D etnsor with 8 elements
a = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8])

# display tensor shape
print(a.shape)

# display  actual tensor
print(a)

# reshape tensor into 4 rows and 2 columns
print(a.reshape([4, 2]))

# display shape of reshaped tensor
print(a.shape)

输出:

torch.Size([8])
tensor([1, 2, 3, 4, 5, 6, 7, 8])
tensor([[1, 2],
        [3, 4],
        [5, 6],
        [7, 8]])
torch.Size([8])

示例 2: Python 代码将张量整形为 4 行 2 列

蟒蛇 3

# import torch module
import torch

# create an 1 D etnsor with 8 elements
a = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8])

# display tensor shape
print(a.shape)

# display  actual tensor
print(a)

# reshape tensor into 4 rows and 2 columns
print(a.reshape([4, 2]))

# display shape
print(a.shape)

输出:

torch.Size([8])
tensor([1, 2, 3, 4, 5, 6, 7, 8])
tensor([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
torch.Size([8])

示例 3: 将张量重塑为 8 行 1 列的 Python 代码。

蟒蛇 3

# import torch module
import torch

# create an 1 D etnsor with 8 elements
a = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8])

# display tensor shape
print(a.shape)

# display  actual tensor
print(a)

# reshape tensor into 8 rows and 1 column
print(a.reshape([8, 1]))

# display shape
print(a.shape)

输出:

torch.Size([8])
tensor([1, 2, 3, 4, 5, 6, 7, 8])
tensor([[1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8]])
torch.Size([8])

方法二:使用扁平化()方法

扁平化()用于将一个 N 维张量扁平化为一个 1D 张量。

语法:火炬.展平(张量)

其中,张量是输入张量

示例 1: Python 代码,创建一个包含二维元素的张量,并展平该向量

蟒蛇 3

# import torch module
import torch

# create an 2 D tensor with 8 elements each
a = torch.tensor([[1,2,3,4,5,6,7,8],
                  [1,2,3,4,5,6,7,8]])

# display actual tensor
print(a)

# flatten a tensor with flatten() function
print(torch.flatten(a))

输出:

tensor([[1, 2, 3, 4, 5, 6, 7, 8],
       [1, 2, 3, 4, 5, 6, 7, 8]])
tensor([1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8])

示例 2: Python 代码,创建一个包含三维元素的张量,并展平该向量

蟒蛇 3

# import torch module
import torch

# create an 3 D tensor with 8 elements each
a = torch.tensor([[[1,2,3,4,5,6,7,8],
                 [1,2,3,4,5,6,7,8]],
                [[1,2,3,4,5,6,7,8],
                 [1,2,3,4,5,6,7,8]]])

# display actual tensor
print(a)

# flatten a tensor with flatten() function
print(torch.flatten(a))

输出:

张量([[1,2,3,4,5,6,7,8],

[1, 2, 3, 4, 5, 6, 7, 8]],

[[1, 2, 3, 4, 5, 6, 7, 8],

[1, 2, 3, 4, 5, 6, 7, 8]]])

张量([1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,

1, 2, 3, 4, 5, 6, 7, 8])

方法三:使用 view()方法

view()用于更改二维格式 IE 行和列中的张量。我们必须指定要查看的行数和列数。

语法: tensor.view(行数,列数)

在哪里,

  • 张量是输入一维张量
  • 行数是观察张量的行数
  • no_of_columns 是查看张量的列总数。

示例 1: Python 程序创建一个包含 12 个元素的张量,视图包含 3 行 4 列,反之亦然。

蟒蛇 3

# importing torch module
import torch

# create one dimensional tensor 12 elements
a=torch.FloatTensor([24, 56, 10, 20, 30,
                     40, 50, 1, 2, 3, 4, 5]) 

# view tensor in 4 rows and 3 columns
print(a.view(4, 3))

# view tensor in 3 rows and 4 columns
print(a.view(3, 4))

输出:

tensor([[24., 56., 10.],
       [20., 30., 40.],
       [50.,  1.,  2.],
       [ 3.,  4.,  5.]])
tensor([[24., 56., 10., 20.],
       [30., 40., 50.,  1.],
       [ 2.,  3.,  4.,  5.]])

示例 2: Python 代码,用于将张量的视图更改为 10 行 1 列,反之亦然。

蟒蛇 3

# importing torch module
import torch

# create one dimensional tensor 10 elements
a = torch.FloatTensor([24, 56, 10, 20, 30,
                     40, 50, 1, 2, 3]) 

# view tensor in 10 rows and 1 column
print(a.view(10, 1))

# view tensor in 1 row and 10 columns
print(a.view(1, 10))

输出:

tensor([[24.],
       [56.],
       [10.],
       [20.],
       [30.],
       [40.],
       [50.],
       [ 1.],
       [ 2.],
       [ 3.]])
tensor([[24., 56., 10., 20., 30., 40., 50.,  1.,  2.,  3.]])

方法 4:使用 resize()方法

这用于调整给定张量的尺寸。

语法: tensor.resize_(没有 _of_tensors,没有_of_rows,没有 _of_columns)

其中:

  • 张量是输入张量
  • no_of_tensors 表示要生成的张量总数
  • no_of_rows 表示新调整大小的张量中的总行数
  • no_of_columns 表示新调整大小的张量中的列总数

示例 1: Python 代码创建一个空的一维张量,并创建 4 行 5 列的 4 个新张量

蟒蛇 3

# importing torch module
import torch

# create one dimensional tensor
a = torch.Tensor() 

# resize the tensor to 4 tensors.
# each tensor with 4 rows and 5 columns
print(a.resize_(4, 4, 5))

输出:

示例 2: 创建一个包含元素的一维张量,并将其大小调整为包含 2 行 2 列的 3 个张量

蟒蛇 3

# importing torch module
import torch

# create one dimensional
a = torch.Tensor() 

# resize the tensor to 2 tensors.
# each tensor with 4 rows and 2 columns
print(a.resize_(2, 4, 2))

输出:

方法 5:使用 unsqueeze()方法

这用于通过在给定位置添加新维度来重塑张量。

语法: tensor.unsqueeze(位置)

其中,位置是从 0 开始的维度索引。

示例 1: 创建二维张量并在 0 维中添加一个维的 Python 代码。

蟒蛇 3

# importing torch module
import torch

# create two dimensional tensor
a = torch.Tensor([[2,3], [1,2]]) 

# display shape
print(a.shape)

# add dimension at 0 position
added = a.unsqueeze(0)

print(added.shape)

输出:

torch.Size([2, 2])
torch.Size([1, 2, 2])

示例 2: 创建一维张量并添加维度的 Python 代码

蟒蛇 3

# importing torch module
import torch

# create one dimensional tensor
a = torch.Tensor([1, 2, 3, 4, 5]) 

# display shape
print(a.shape)

# add dimension at 0 position
added = a.unsqueeze(0)

print(added.shape)

# add dimension at 1 position
added = a.unsqueeze(1)

print(added.shape)

输出:

torch.Size([5])
torch.Size([1, 5])
torch.Size([5, 1])


回到顶部