问题描述
我有一个关于我们在 PyTorch 中定义的张量形状的简单问题。 假设我说:
input = torch.randn(32, 35)
这将创建一个 32 行 35 列的矩阵。 现在,当我定义:
input2 = torch.randn(1,2,32, 35)
关于新矩阵 input2 的维度,我能说些什么? 我如何在这里定义行和列? 我的意思是我有两个由张量打包的形状为 32*35 的矩阵吗?
我想更好地理解这背后的几何。 谢谢。
1楼
将张量形状视为维度包含的列表数量。 例如,一个形状为 (4, 4, 2) 的张量将有四个元素,这些元素都包含 4 个元素,而这些元素又包含 2 个元素。
- 第一个包含 4 个元素。
- 第二个包含 4 个元素。
- 第三个维度包含 2 个元素。
数据如下所示:
[[[0.86471446, 0.26302726],
[0.04137454, 0.00349315],
[0.06559607, 0.45617865],
[0.0219786, 0.27513594]],
[[0.60555118, 0.10853228],
[0.07059685, 0.32746256],
[0.99684617, 0.07496456],
[0.55169005, 0.39024103]],
[[0.55891377, 0.41151245],
[0.3434965, 0.12956237],
[0.74908291, 0.69889266],
[0.98600141, 0.8570597]],
[[0.7903229, 0.93017741],
[0.54663242, 0.72318166],
[0.6099451, 0.96090241],
[0.63772238, 0.78605599]]]
也就是说,四元素二元素四元素。
2楼
对,那是正确的。 您的 input2 张量的等级为 4。(等级是维度)并且每个维度的界限是 (1,2,32,35)
- 第一个维度可以容纳一个元素。
- 第二个可以容纳两个。
- 第三个可以容纳 32 个元素。
- 第四维可以容纳 35 个元素。
编辑:我发现将高维数组视为一系列列表很有用。 在您的情况下,等级 4 张量将是列表列表的列表。