注:本文转自赛灵思中文社区论坛,源文链接在此。本文原作者为XILINX工程师。
以下为个人译文,仅供个人学习记录参考之用,如有疏漏之处,还请不吝赐教。
在数据处理中,对原始数据进行重塑或重新排序并创建多个副本是很常见的行为。无论执行任何新步骤,都会创建新副本。随着程序的增大,占用的内存也会增大,我几乎从未考虑过这个问题,直到遇到了“内存不足”错误。
张量 (tensor) 的神奇之处在于多个张量可引用同一存储空间,从而显著提升内存使用效率。
在下一篇的文章中,我将聊一聊张量所具有的更神奇的属性,即跟踪上级操作,但在本文中,我将主要介绍内存优化方面的内容。
张量 (tensor) 的神奇之处在于多个张量可以引用同一存储空间(即包含给定类型的数字的连续内存区块)。此行为由 torch.storage 进行管理。
每个张量都包含 .storage 属性,用于显示内存中存储的张量内容。
在下一篇的文章中,我将聊一聊张量所具有的更神奇的属性,即跟踪上级操作,但在本文中,我将主要介绍内存优化方面的内容。
注:全新 Vitis AI 1.2 发行版将首次为 PyTorch 提供支持。本文对于新增对此热门框架的支持表示祝贺,并提供了 1 个 PyTorch 专用的 Jupyter Notebook 格式示例。
输入 [1]:
import torch
a = torch.randint(0, 9, (5,3))
a
输出 [1]:
tensor([[4, 1, 6],
[0, 8, 8],
[1, 2, 1],
[0, 5, 7],
[0, 0, 7]])
输入 [2]:
a.storage()
输出 [2]:
4
1
6
0
8
8
1
2
1
0
5
7
0
0