分析pytorch中的view和reshape

在pytorch编写的代码中,view方法和reshape方法是非常常用的。但是经过我的一次亲手撸代码的经历,发现事情并不那么简单,那就一起来看一下我为何这么说吧?

一、基础认知

在此之前,希望对以下几点我们是有共同认知的:

  1. (B, C, H, W)这个形式的tensor通常都是作为网络的输入,而每个维度都是有其意义的,比如第一维的B就是不同的图片(暂且认为是输入的图片),也就是一个批次中的batch size大小,C是tensor的通道, H和W分别是tensor 的spatial size,即高和宽。比如下面这幅图就可以看作(2,3,2,2
    示例
  2. 还有一点需要认知的就是(4×3, 2)与(3×4, 2)是不同的。有人会说那不都是(12, 2)嘛,这样说的人需要回到第一点再思考,也可借助下面这幅图理解【所以看一些tensor的shape的时候尽量要拆开来做注释】:
    (2×2×3, 2)与(3×2×2, 2)的区别
    更直白一点地说就是4×3是3个4,而3x4是4个3,就是这样的区别。
    到这里看不懂还可以看下面的例子。

二、官方文档

现在就可以来看看官方文档中怎么解释这两个用法的:

2.1 view()

view(*shape) → Tensor
view()的pytorch官方文档

2.2 reshape()

torch.reshape(input, shape) → Tensor
reshape()的pytorch官方文档

三、结论

  • view函数和reshape函数在我们使用过程中的基本功能是类似的,reshape可在不连续的情况下不会报错
  • 对于-1的用法,两者都是:如果输入(B, C, H, W)经过view(B, -1)或者reshape(B, -1)都会变成(B, C×H×W)
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

laizi_laizi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值