1. unsqueeze()
unsqueeze()
函数是 PyTorch 中的一个张量操作函数,用于在指定位置添加一个新的维度。该函数的作用是在张量的指定位置插入一个新的维度,从而改变张量的形状。
unsqueeze(dim)
函数接受一个参数 dim
,用于指定在哪个位置插入新的维度。dim
参数的取值范围为 -len(input) - 1
到 len(input)
。其中,负数表示从最后一个维度开始计数。如果 dim
是负数,则表示从最后一个维度开始计数插入新的维度,如果 dim
是正数,则表示从第一个维度开始计数插入新的维度。
例如,如果一个张量的形状为 (3, 4, 5)
,则可以通过 unsqueeze(0)
在第一个维度前插入一个新的维度,结果形状为 (1, 3, 4, 5)
;通过 unsqueeze(-1)
在最后一个维度后插入一个新的维度,结果形状为 (3, 4, 5, 1)
。
下面是一个示例代码:
import torch
# 创建一个形状为 (3, 4) 的二维张量
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# 在第一个维度前插入一个新的维度
y = x.unsqueeze(0)
print(y.shape) # 输出:torch.Size([1, 3, 4])
# 在最后一个维度后插入一个新的维度
z = x.unsqueeze(-1)
print(z.shape) # 输出:torch.Size([3, 4, 1])
unsqueeze()
函数通常用于在进行张量运算时对形状进行调整,以满足运算要求。
2 squeeze()
squeeze()
函数是 PyTorch 中的一个张量操作函数,用于去除张量中的尺寸为 1 的维度。该函数的作用是压缩张量中尺寸为 1 的维度,从而改变张量的形状。
squeeze(dim=None)
函数接受一个参数 dim
,用于指定要去除的维度。如果不提供 dim
参数,则会去除所有尺寸为 1 的维度。如果提供了 dim
参数,则只会去除指定位置的尺寸为 1 的维度。
dim
参数的取值范围与 unsqueeze()
函数相同,负数表示从最后一个维度开始计数。
下面是一个示例代码:
import torch
# 创建一个形状为 (1, 3, 1, 4) 的张量
x = torch.randn(1, 3, 1, 4)
# 去除所有尺寸为 1 的维度
y = x.squeeze()
print(y.shape) # 输出:torch.Size([3, 4])
# 去除指定位置的尺寸为 1 的维度
z = x.squeeze(0) # 去除第一个维度
print(z.shape) # 输出:torch.Size([3, 1, 4])
# 去除最后一个维度的尺寸为 1 的维度
w = x.squeeze(-1)
print(w.shape) # 输出:torch.Size([1, 3, 1])
squeeze()
函数通常用于在进行张量运算时去除不必要的维度,以便简化张量的形状。