1. 证明一个矩阵 的转置的转置是 ,即 。
1. 矩阵转置的定义:
设 是 矩阵,则其转置 是 矩阵,且元素满足:
其中, 表示矩阵的行索引和列索引。
2. 矩阵转置的转置公式推导:
根据矩阵转置的定义,我们可以得到:
进一步展开,得到:
2. 给出两个矩阵 和 ,证明 “它们转置的和” 等于 “它们和的转置”,即 。
1. 矩阵转置的定义:
设 是 矩阵,则其转置 是 矩阵,且元素满足:
其中, 表示矩阵的行索引和列索引。
2. 矩阵转置的和等于它们的和的转置公式推导:
根据矩阵转置的定义,我们可以得到:
3. 给定任意方阵 , 总是对称的吗?为什么?
得
即 对称
4. 本节中定义了形状 的张量 X。len(X) 的输出结果是什么?
5. 对于任意形状的张量 X, len(X) 是否总是对应于 X 特定轴的长度?这个轴是什么?
6. 运行 A/A.sum(axis=1),看看会发生什么。请分析一下原因?
7. 考虑一个具有形状 的张量,在轴 0、1、2 上的求和输出是什么形状?
8. 为 linalg.norm 函数提供 3 个或更多轴的张量,并观察其输出。对于任意形状的张量这个函数计算得到什么?
dash_line = '=' * 20
# 本节中定义了形状的张量 X。len(X) 的输出结果是什么?
# 对于任意形状的张量X, len(X) 是否总是对应于X特定轴的长度?这个轴是什么?
X = torch.ones(24).reshape(2, 3, 4)
display(X, len(X))
# 运行 A/A.sum(axis=1),看看会发生什么。请分析一下原因?
A = torch.arange(20).reshape(5, 4)
# A_sum = A.sum(axis=1)
A_sum = A.sum(axis=1, keepdim=True)
print(dash_line)
display(A, A_sum, A_sum.shape, A_sum.T.shape)
display(A / A_sum)
# 考虑一个具有形状的张量,在轴 0、1、2 上的求和输出是什么形状?
print(dash_line)
display(X.shape, X.sum(axis=0).shape, X.sum(axis=1).shape, X.sum(axis=2).shape)
# 为 linalg.norm 函数提供 3 个或更多轴的张量,并观察其输出。对于任意形状的张量这个函数计算得到什么?
print(dash_line)
display(torch.linalg.norm(X), X.pow(2).sum().sqrt())
tensor([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
2
====================
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
tensor([[ 6],
[22],
[38],
[54],
[70]])
torch.Size([5, 1])
torch.Size([1, 5])
tensor([[0.0000, 0.1667, 0.3333, 0.5000],
[0.1818, 0.2273, 0.2727, 0.3182],
[0.2105, 0.2368, 0.2632, 0.2895],
[0.2222, 0.2407, 0.2593, 0.2778],
[0.2286, 0.2429, 0.2571, 0.2714]])
====================
torch.Size([2, 3, 4])
torch.Size([3, 4])
torch.Size([2, 4])
torch.Size([2, 3])
====================
tensor(4.8990)
tensor(4.8990)