【问题标题】:What is the formal definition for "view" in this context?在这种情况下,“视图”的正式定义是什么?
【发布时间】:2021-12-14 23:14:10
【问题描述】:

考虑以下段落中名为 The essence of tensors 的朋友部分名为 张量:多维数组 的章节名为 它以张量开始 来自 Eli Stevens 等人的《Deep Learning with PyTorch》一书中。

Python 列表或数字元组是 Python 对象的集合 在内存中单独分配,如左图所示 在图 3.3 中。另一方面,PyTorch 张量或 NumPy 数组 手,是视图(通常)连续的内存块 包含未装箱的 C 数字类型而不是 Python 对象。每个 在这种情况下,元素是一个 32 位(4 字节)浮点数,正如我们在 图 3.3 右侧。这意味着存储 1,000,000 的一维张量 浮点数将需要 4,000,000 个连续字节,外加一个 元数据的开销很小(例如维度和数字类型)。

他们所指的图如下所示,取自书中

上面的段落是说张量是对连续内存块的视图。在这种情况下,视图究竟是什么意思?

【问题讨论】:

    标签: pytorch tensor definition


    【解决方案1】:

    “视图”是您解释这些数据的方式,或者更准确地说,是张量的形状。例如,给定一个具有 40 个连续字节(10 个连续浮点数)的内存块,您可以将其查看为 2x5 张量或 5x2 张量。

    在 pytorch 中,更改张量视图的 API 是 view()。一些例子:

    Python 3.8.10 (default, Sep 28 2021, 16:10:42) 
    [GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import torch
    >>> x = torch.randn(10, dtype=torch.float32)
    >>> x.shape
    torch.Size([10])
    >>>
    >>> x = x.view(2, 5)
    >>> x.shape
    torch.Size([2, 5])
    >>>
    >>> x = x.view(5, 2)
    >>> x.shape
    torch.Size([5, 2])
    

    当然,有些视图是禁止 10 个浮点数的:

    >>> x = x.view(3, 3)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    RuntimeError: shape '[3, 3]' is invalid for input of size 10
    

    view 不会更改底层内存中的数据。它只是改变了你“查看”张量的方式。

    【讨论】:

      猜你喜欢
      • 2013-04-23
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多