PyTorch|PyTorch 如何理解张量(一维张量、二维张量、行/列向量、矩阵)
理解张量,并将张量与线性代数的知识连接起来,我认为最重要的是理解 tensor
的两个属性:shape
和 ndim
。
ndim
表示张量的维度,一维张量的 ndim
值为 1,二维张量的 ndim
值为 2。
shape
表示张量的形状,它的值是一个列表,列表元素个数与张量的维度相等,每一个元素值表示张量在此维度的元素个数。
举例来说:
>>> tensor = torch.randn(3, 2, 2)
>>> tensor
tensor([[[ 1.1070, -1.3736],
[-1.6743,1.4504]],[[ 0.0119, -0.1400],
[ 0.5095, -0.8208]],[[-1.5840, -0.2786],
[ 2.3791, -1.4570]]])
>>> tensor.ndim
3
>>> tensor.shape
torch.Size([3, 2, 2])
对于这样一个张量,它有三个维度,
shape = 3 × 2 × 2
,这表示此张量有三个二维张量,每个二维张量中有两个一维张量,每个一维张量中有两个元素。然后我们从线性代数的角度来理解张量:
由于行向量和列向量都是向量,而向量在
PyTorch
中被抽象为一维张量,因此在 PyTorch
中不区分行向量和列向量,一律都是一维张量。初学者可能会将
torch.Size(1, n)
的张量认为是行向量,将 torch.Size(n, 1)
的张量认为是列向量,然而这两种张量的 ndim = 2
,因此它们是二维张量,可以类比为线性代数中的矩阵。甚至于 torch.Size(1, 1)
的张量都是矩阵,因为它是二维张量。【PyTorch|PyTorch 如何理解张量(一维张量、二维张量、行/列向量、矩阵)】关于
PyTorch
中张量(向量/矩阵)的乘法请看这篇博文。推荐阅读
- PyTorch|PyTorch 中的乘法(mul()、multiply()、matmul()、mm()、mv()、dot())
- 苹果如何控制android手机|苹果如何控制android手机,安卓手机怎么控制苹果()
- 记录 http2 四个难以理解的疑惑点
- 带你深度理解“机器学习”
- Node.js中小数计算溢出问题以及如何解决
- 如何用set实现一个抽奖
- 一文理解乐观锁与悲观锁
- 如何避免黑客攻击(国内首个云端加密代码库来帮忙)
- handler机制的源码分析和理解
- 如何优雅的修改node_modules中的依赖库