文章目录
- [一、view() 或 reshape()](#一、view() 或 reshape())
- 二、unsqueeze()
- 三、squeeze()
- 四、transpose()
- 五、torch.expand_dims
一、view() 或 reshape()
view() 或 reshape(): 这两个函数可以用于改变张量的形状,但保持元素总数不变。它们可以接受一个新的形状作为参数,并返回一个新的张量。例如:
python
import torch
x = torch.randn(2, 3, 4) # 创建一个形状为 [2, 3, 4] 的张量
x_viewed = x.view(2, 12) # 改变形状为 [2, 12]
x_reshaped = x.reshape(6, 4) # 改变形状为 [6, 4]
二、unsqueeze()
unsqueeze(): 这个函数可以在指定位置插入一个新的维度。它接受一个整数作为参数,表示要插入的位置。例如:
python
import torch
x = torch.randn(3, 4) # 创建一个形状为 [3, 4] 的张量
x.unsqueeze(0) # 在第 0 个位置插入一个新的维度,形状变为 [1, 3, 4]
x.unsqueeze(1) # 在第 1 个位置插入一个新的维度,形状变为 [3, 1, 4]
python
import torch
x = torch.randn(2, 3) # 创建一个形状为 [2, 3] 的张量
x_unsqueezed = torch.unsqueeze(x, dim=0) # 在第 0 个位置插入一个新的维度,形状变为 [1, 2, 3]
三、squeeze()
squeeze(): 这个函数可以删除维度为 1 的维度。它会返回一个新的张量,其中已删除了所有维度为 1 的维度。例如:
python
import torch
x = torch.randn(1, 3, 1, 4) # 创建一个形状为 [1, 3, 1, 4] 的张量
x.squeeze() # 删除所有维度为 1 的维度,形状变为 [3, 4]
四、transpose()
transpose(): 这个函数可以交换张量的维度顺序。它接受两个整数作为参数,表示要交换的维度的位置。例如:
python
import torch
x = torch.randn(2, 3) # 创建一个形状为 [2, 3] 的张量
x.transpose(0, 1) # 交换维度 0 和维度 1 的位置,形状变为 [3, 2]
五、torch.expand_dims
torch.expand_dims(input, dim): 这个函数接受一个张量 input 和一个整数 dim,表示要在 dim 位置插入一个新的维度。它会返回一个新的张量,其中插入了一个维度。例如:
python
import torch
x = torch.randn(2, 3) # 创建一个形状为 [2, 3] 的张量
x_expanded = torch.expand_dims(x, dim=1) # 在第 1 个位置插入一个新的维度,形状变为 [2, 1, 3]