上一篇文章记录了维度操作的增加维度
和维度压缩
,这篇笔记介绍维度的展平
x flatten(0, 1)
flatten是对torch张量的操作,对指定维度进行展平操作。
下面进行一个实验看一下,这个函数的具体用法
x = torch.rand(2,3,4)
x = x.flatten(0,1)
print(x.shape)
输出结果为:
torch.Size([6, 4])
flatten指定维度的方式一次只能对两个维度的操作,若对三个维度进行操作会报错。若不指定维度,则会展平所有维度
下面举个不指定维度的例子
x = torch.rand(2,3,4)
x = x.flatten()
print(x.shape)
结果为下面所示,事实证明,若不指定维度的方式,flatten会展平所有的维度。
torch.Size([24])
x view(x.size(0), -1)
x = torch.rand(2,3,4)
x = x.view(x.size(0), -1)
print(x.shape)
torch.Size([2, 12])
结果如上,从结果中不难看出,这样是沿着最后一个维度进行展平,具体的展平方式是size(0)不动,对剩下的维度展平。
再进行一个实验
x = torch.rand(2,3,4)
print(x.size(0))
print(x)
x = x.view(x.size(1),-1)
print(x.shape)
print(x)
输出结果如下,可以看出view其实是对矩阵进行形状重塑,当然也可以当作展平处理进行使用。
2
tensor([[[0.3708, 0.6937, 0.4584, 0.4001],
[0.5163, 0.7196, 0.4849, 0.9723],
[0.3077, 0.4114, 0.1740, 0.4664]],
[[0.3961, 0.0221, 0.5449, 0.0027],
[0.5181, 0.0619, 0.4263, 0.0653],
[0.6001, 0.6604, 0.7847, 0.7992]]])
torch.Size([3, 8])
tensor([[0.3708, 0.6937, 0.4584, 0.4001, 0.5163, 0.7196, 0.4849, 0.9723],
[0.3077, 0.4114, 0.1740, 0.4664, 0.3961, 0.0221, 0.5449, 0.0027],
[0.5181, 0.0619, 0.4263, 0.0653, 0.6001, 0.6604, 0.7847, 0.7992]])
以上就是今天要讲的内容,本文仅仅简单介绍了展平的使用flatt和view可以实现大部分的展平操作。