PyTorch之Tensor常用操作

PyTorch之Tensor常用操作

注:主要内容是翻译自PyTorch的官方API文档,再加上一些自己的理解。

Tensor 之 view 方法

view(*shape) → Tensor

  • 返回的是一个有着相同数据但形状不同的Tensor。
  • 对于一个viewed的tensor,新的view size 必须与原始的size和stride兼容,比如每一个新的维度必须要么是原始维度的一个子空间,要么仅仅跨越原始维度 d , d + 1 , . . . , d + k d,d+1,...,d+k d,d+1,...,d+k, 以致于可以满足contiguity-like condition使 ∀ i = d , d + 1 , . . . , d + k − 1 \forall i=d,d+1,...,d+k-1 i=d,d+1,...,d+k1,
    s t r i d e [ i ] = s t r i d e [ i + 1 ] × s i z e [ i + 1 ] stride[i]=stride[i+1] \times size[i+1] stride[i]=stride[i+1]×size[i+1]
  • 否则的话,便不要用view(), 转而用reshape().

Parameters

shape (torch.Size or int…) – the desired size

Example

tensor = torch.FloatTensor([[[1,1,1],[2,2,2],[3,3,3],[4,4,4]], [[5,5,5],[6,6,6],[7,7,7],[8,8,8]]])  # 32-bit floating point
tensor = tensor.view(2, -1, 4)

其实现结果如下图所示:
在这里插入图片描述

>>> x = torch.randn(4, 4)
>>> x.size()
torch.Size([4, 4])

>>> y = x.view(16)
>>> y.size()
torch.Size([16])

>>> z = x.view(-1, 8)  # -1的意思是使用另一个指定维度自动推算这个维度大小。
>>> z.size()
torch.Size([2, 8])

>>> a = torch.randn(1, 2, 3, 4)
>>> a.size()
torch.Size([1, 2, 3, 4])

>>> b = a.transpose(1, 2)  # Swaps 2nd and 3rd dimension
>>> b.size()
torch.Size([1, 3, 2, 4])

>>> c = a.view(1, 3, 2, 4)  # Does not change tensor layout in memory
>>> c.size()
torch.Size([1, 3, 2, 4])

>>> torch.equal(b, c)
False
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值