深度学习笔记(4)——维度操作(2)展平、·拼接、拆分

深度学习笔记(4)——维度操作(2)展平

文章目录

  • 深度学习笔记(4)——维度操作(2)展平
  • 前言
  • 一、 flatten()
  • 二、view()
  • 总结


前言

上一篇文章记录了维度操作的增加维度维度压缩,这篇笔记介绍维度的展平

一、 flatten()

  • 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])

二、view()

  • 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]])

总结

  1. x.flatten(dim1,dim2),dim1,dim2必须相邻
  2. x.view(size(0),-1),view可以重塑成任何形状

以上就是今天要讲的内容,本文仅仅简单介绍了展平的使用flatt和view可以实现大部分的展平操作。

你可能感兴趣的:(深度学习,深度学习,人工智能,python)