深度学习笔记(4)——维度操作(1)压缩维度与扩展维度
文章目录
前言
维度操作
在深度学习的模型搭建的过程中是一类常用的操作,其中对维度的操作有增加维度
、压缩维度
、展平
、·拼接
、拆分
、维度重塑
,转置
’,维度交换
等,下面总结下目前可以想到的维度操作。
一、扩展维度
1.1.1 torch.unsqueeze(input,dim)
torch.unsqueeze(input,dim)
input:要操作的tensor
dim:需要加的维度
1.1.2实验
import torch
x = torch.tensor([[7,8,9,10],[5,6,7,8]])
y = torch.unsqueeze(x,2)
print("x.shape:",x.shape)
print("x:",x)
print("y.shape:",y.shape)
print("y:",y)
实验结果:
x.shape: torch.Size([2, 4])
x: tensor([[ 7, 8, 9, 10],
[ 5, 6, 7, 8]])
y.shape: torch.Size([2, 4, 1])
y: tensor([[[ 7],[ 8],[ 9],[10]],
[[ 5],[ 6],[ 7],[ 8]]])
1.2.1 None/np.newaxis
新增维度可以通过None实现具体使用方法和np.newaxis一样.
在需要增加维度的地方使用正则表达式加上None或者np.newaxis即可实现维度增加
1.2.2 实验
下面通过两组实验来记录下用法:
实验1:None
x = torch.randn(1,768)
print('x.shape',x.shape)
x = x[:, :, None]
print('x_None', x.shape)
结果:
x.shape torch.Size([1, 768])
x_None torch.Size([1, 768, 1])
实验2:np.newaxis
x = torch.randn(1,768)
print('x.shape',x.shape)
x = x[:, :, np.newaxis]
print('x_newaxis', x.shape)
结果:
x.shape torch.Size([1, 768])
x_newaxis torch.Size([1, 768, 1])
二、压缩维度
2.1 torch.squeeze(input,dim)
压缩维度通过torch.squeeze
实现,使用方法和torch.squeeze一样
2.2 实验
代码:
x = torch.randn(1, 4, 1, 4)
print("x.shape:", x.shape)
y1 = torch.squeeze(x, 1)
print("y1.shape:", y1.shape)
y = torch.squeeze(x, 0)
print("y.shape:", y.shape)
输出结果:
x.shape: torch.Size([1, 4, 1, 4])
y1.shape: torch.Size([1, 4, 1, 4])
y.shape: torch.Size([4, 1, 4])
三、结论
以上就是维度增加和压缩的操作,接下来几篇记录剩下的维度操作