tensor.contiguous()

tensor.contiguous 的作用

  之前看一些大佬的代码,在对一些feature map进行维度转换处理的时候,在使用tensor.transpose() 等一些维度变换函数后,会先使用 tensor.contiguous() 然后再用tensor.view() 这种维度变形函数


在这里插入图片描述
  pytorch官方给的函数解释为:
  Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory format, this function returns the self tensor.(返回包含与自张量相同数据的连续内存张量。 如果自张量已经在指定的内存格式中,则此函数返回自张量。)


  再参考一篇博客(链接)的说法:(两种解释)

  1. 当一个Tensor经过 tensor.transpose()、tensor.permute()等这类维度变换函数后,内存并不是连续的,而tensor.view()维度变形函数的要求是需要Tensor的内存连续,所以在运行tensor.view()之前,先使用 tensor.contiguous(),防止报错。

  2. 维度变换函数是进行的浅拷贝操作(只复制了指像某个对象的指针,新旧对象还是共享同一块内存)即view操作会连带原来的变量一同变形,这是不合法的,所以也会报错;---- 这个解释有部分道理,也即contiguous返回了tensor的深拷贝contiguous copy数据;

  不过当在这类操作中忘记调用tensor.contiguous()而报错的话,pytorch也会进行提示:

RuntimeError: input is not contiguous
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fire丶Chicken

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

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

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

打赏作者

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

抵扣说明:

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

余额充值