pytorch中contigous深入理解

参考:
https://zhuanlan.zhihu.com/p/64551412
https://stackoverflow.com/questions/26998223/what-is-the-difference-between-contiguous-and-non-contiguous-arrays/26999092#26999092

总结:

tensor经过permute以及transform之后,对应数据的存储并没有发生改变,改变的是数据读出的方式,而view函数是从内存中(python 中多维数组是按行存储的)读取出来数据,然而此时经过permute之后的数据由于本身的stride和size不满足contigous(连续关系),因此当需要使用view时,可以重新开辟一段内存空间,这里使用contigous的话,能够开辟一段新的内存空间,此时再使用view就没有什么问题了。

实验部分:

import torch
a = torch.tensor([[1,2,3],[4,5,6]])
a.data_ptr()
94632533370368
a.permute(1,0).contiguous().view(-1)
tensor([1, 4, 2, 5, 3, 6])
a.view(-1)
tensor([1, 2, 3, 4, 5, 6])
b = a.permute(1,0).contiguous()
c = a.permute(1,0)
c.data_ptr()
94632533370368
b.data_ptr()
94632533452096
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值