PyTorch基础:Tensor的索引与变形

索引操作与Numpy非常类似,主要包含下标索引、表达式索引、使用torch.where()与Tensor.clamp()的选择性索引
在这里插入图片描述
变形操作是指改变Tensor维度,以适应在深度学习的计算中,数据维度经常变换的需求,是一种十分重要的操作。在PyTorch中主要有4类不同的变形方法,如下图:
在这里插入图片描述

  1. view()和reshape()函数
    view()、resize()和reshape()函数可以在不改变Tensor数据的前提下任意改变Tensor的形状,必须保证调整前后的元素总数相同,并且调整前后内存共享,三者的作用基本相同
    在这里插入图片描述
    如果想要直接改变Tensor尺寸,可以使用resize_()的原地操作函数。在resize_()函数中,如果超过了原Tensor的大小则重新分配内存,多出部分置0,如果小于原Tensor大小则剩余的部分仍然会隐藏保存
    在这里插入图片描述

  2. transpose()和permute()函数
    transpose()函数可以将指定的两个维度的元素进行转置,而permute()函数可以按照给定的维度进行维度变换
    在这里插入图片描述

  3. squeeze()和unsqueeze()函数
    在实际的应用中,经常需要增加或减少Tensor的维度,尤其是维度为1的情况,这时候可以使用squeeze()与unsqueeze()函数,前者用于去除size为1的维度,而后者则是将指定的维度的size变为1
    在这里插入图片描述

  4. expand()和expand_as()函数
    有时候需要采用复制元素的形式来扩展Tensor的维度,这时expand就派上用场了。expand()函数将size为1的维度复制扩展为指定大小,也可以使用expand_as()函数指定为示例Tensor的维度
    在这里插入图片描述
    在这里插入图片描述
    注意:在进行Tensor操作时,有些操作如tanspose()、permute()等可能会把Tensor在内存中变得不连续,而有些操作如view()等是需要Tensor内存连续的,这种情况下需要使用contiguous()操作现将内存变为连续的。PyTorch中的reshape()操作可以看做是Tensor.contiguous().view()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丁天牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值