我一直听到人们说这样的话:
假设你有一个只有他年龄的人的一维向量。然后你添加另一个维度,即他的高度,所以你有一个二维向量
但我也听说过
2d 向量是 2 阶张量
有人可以澄清哪个是正确的吗?
是吗
[1, 1]
或者
[[1,1],
[1,1]]
我一直听到人们说这样的话:
假设你有一个只有他年龄的人的一维向量。然后你添加另一个维度,即他的高度,所以你有一个二维向量
但我也听说过
2d 向量是 2 阶张量
有人可以澄清哪个是正确的吗?
是吗
[1, 1]
或者
[[1,1],
[1,1]]
“张量”是一个非常笼统的术语,意思是N 维数组。张量可以是 0 维(标量)、1 维(向量)、2 维(矩阵)等等……张量是一个非常包容的术语,表示上面列出的所有内容。有时,人们使用“张量”来指代高维对象,如下所述:
虽然从技术上讲,上述所有构造都是有效的张量,但通俗地说,当我们谈到张量时,我们通常是指将矩阵概念推广到 N ≥ 3 维。那么,我们通常只会将 3 维或更多维的张量称为张量,以避免混淆 [...]
但请记住,这只是一种实践,N 维数组在技术上是一个张量。
来到你的问题,如果张量更像:
[1, 1]
或者
[[1,1],
[1,1]]
首先,它们分别看起来像 Python 列表和列表列表。严格来说,Python 列表不是数学对象。如果您 import numpy,将它们描述为更正确:
numpy.array([ 1, 1 ])
和
numpy.array([[ 1, 1 ],
[ 1, 1 ]])
现在这些对象具有向量-矩阵-张量的数学特性。我认为它们都可以被认为是不同种类和等级的张量。第一个是等级 1,另一个是等级 2。
@Leevo 已经很好地解释了它。或者,只需询问 Pytorch:
import torch
x = torch.tensor([1, 1])
y = torch.tensor([[ 1, 1 ], [ 1, 1 ]])
print("x dimension: {}".format(x.dim()))
print("y dimension: {}".format(y.dim()))
给出:
x dimension: 1
y dimension: 2
因此,您的第一个具有一个人的年龄和身高的向量/张量(!)只有一个维度,而您的第二个向量/张量有两个维度。
在 Python 中,您可以将向量维度视为list-of-lists-of-lists-of...。
所以,
[1,1] # 1D
[[1,1],
[1,1]] # 2D
[[[1,1],
[1,1]],
[[1,1],
[1,1]]] # 3D
然后你提到:
然后你添加另一个维度,即他的高度,所以你有一个二维向量。
我认为这可以从两个方面来解释:
[<age>] # 1D of size 1x1
# You can add height and make it 2D
[[<age>],
[<height>]] # 2D of size 2x1
# or, add height and keep it 1D
[<age>, <height>] # 1D of size 1x2