当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch Tensor.view用法及代码示例


本文简要介绍python语言中 torch.Tensor.view 的用法。

用法:

Tensor.view(*shape) → Tensor

参数

shape(torch.Size或者诠释...) -所需尺寸

参数

dtype(torch.dtype) -所需的数据类型

返回与 self 张量具有相同数据但具有不同 shape 的新张量。

返回的张量共享相同的数据,并且必须具有相同数量的元素,但可能具有不同的大小。对于要查看的张量,新视图大小必须与其原始大小和步幅兼容,即每个新视图维度必须是原始维度的子空间,或者仅跨越满足以下条件的原始维度 contiguity-like 条件 ,

否则,如果不复制它(例如,通过 contiguous() ),则无法将 self 张量视为 shape 。当不清楚是否可以执行 view() 时,建议使用 reshape() ,如果形状兼容,则返回视图,否则复制(相当于调用 contiguous() )。

例子:

>>> 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)  # the size -1 is inferred from other dimensions
>>> 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
view(dtype) → Tensor

返回与 self 张量具有相同数据但具有不同 dtype 的新张量。 dtype 每个元素的字节数必须与 self 的 dtype 相同。

警告

TorchScript 不支持此重载,在 Torchscript 程序中使用它会导致未定义的行为。

例子:

>>> x = torch.randn(4, 4)
>>> x
tensor([[ 0.9482, -0.0310,  1.4999, -0.5316],
        [-0.1520,  0.7472,  0.5617, -0.8649],
        [-2.4724, -0.0334, -0.2976, -0.8499],
        [-0.2109,  1.9913, -0.9607, -0.6123]])
>>> x.dtype
torch.float32

>>> y = x.view(torch.int32)
>>> y
tensor([[ 1064483442, -1124191867,  1069546515, -1089989247],
        [-1105482831,  1061112040,  1057999968, -1084397505],
        [-1071760287, -1123489973, -1097310419, -1084649136],
        [-1101533110,  1073668768, -1082790149, -1088634448]],
    dtype=torch.int32)
>>> y[0, 0] = 1000000000
>>> x
tensor([[ 0.0047, -0.0310,  1.4999, -0.5316],
        [-0.1520,  0.7472,  0.5617, -0.8649],
        [-2.4724, -0.0334, -0.2976, -0.8499],
        [-0.2109,  1.9913, -0.9607, -0.6123]])

>>> x.view(torch.int16)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: Viewing a tensor as a new dtype with a different number of bytes per element is not supported.

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.Tensor.view。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。