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

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


前言

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

一、 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可以实现大部分的展平操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值