深度学习2.3 线性代数 课后作业
问题
  1. 证明一个矩阵A\mathbf{A}A的转置的转置是A\mathbf{A}A,即(A⊤)⊤=A(\mathbf{A}^\top)^\top = \mathbf{A}(A)=A
  2. 给出两个矩阵A\mathbf{A}AB\mathbf{B}B,证明“它们转置的和”等于“它们和的转置”,即A⊤+B⊤=(A+B)⊤\mathbf{A}^\top + \mathbf{B}^\top = (\mathbf{A} + \mathbf{B})^\topA+B=(A+B)
  3. 给定任意方阵A\mathbf{A}AA+A⊤\mathbf{A} + \mathbf{A}^\topA+A总是对称的吗?为什么?
  4. 本节中定义了形状(2,3,4)(2,3,4)(2,3,4)的张量Xlen(X)的输出结果是什么?
  5. 对于任意形状的张量X,len(X)是否总是对应于X特定轴的长度?这个轴是什么?
  6. 运行A/A.sum(axis=1),看看会发生什么。请分析一下原因?
  7. 考虑一个具有形状(2,3,4)(2,3,4)(2,3,4)的张量,在轴0、1、2上的求和输出是什么形状?
  8. linalg.norm函数提供3个或更多轴的张量,并观察其输出。对于任意形状的张量这个函数计算得到什么?
答案

{“value”:“”,“field”:“reasoning_content”}{“value”:“”,“field”:“reasoning_content”}{“value”:“”,“field”:“reasoning_content”}{“value”:“”,“field”:“reasoning_content”}{“value”:“”,“field”:“reasoning_content”}{“value”:“”,“field”:“reasoning_content”}{“value”:“”,“field”:“reasoning_content”}{“value”:“”,“field”:“reasoning_content”}

线性代数与张量操作问题解答


1. 转置的转置恒等性证明

命题:[(\mathbf{A}\top)\top = \mathbf{A}]

证明

  • 设矩阵 (\mathbf{A}) 的元素为 (a_{ij}),其转置 (\mathbf{A}^\top) 的元素为 (a_{ji})。
  • 再次转置后,((\mathbf{A}\top)\top) 的元素为 (a_{ij}),与原始矩阵 (\mathbf{A}) 完全一致。
  • 结论:两次转置操作恢复原始矩阵。

2. 转置加法分配律证明

命题:(\mathbf{A}^\top + \mathbf{B}^\top = (\mathbf{A} + \mathbf{B})^\top)

证明

  • 对任意元素位置 ((i,j)):
    [
    (\mathbf{A}^\top + \mathbf{B}^\top){ij} = a{ji} + b_{ji}
    ]
    [
    (\mathbf{A} + \mathbf{B})^\top_{ij} = (\mathbf{A} + \mathbf{B}){ji} = a{ji} + b_{ji}
    ]
  • 结论:两式相等,转置操作对加法可分配。

3. 对称矩阵构造问题

命题:(\mathbf{A} + \mathbf{A}^\top) 是否总是对称?

分析与证明

  • 对称矩阵定义:(\mathbf{S}^\top = \mathbf{S})
  • 计算转置:
    [
    (\mathbf{A} + \mathbf{A}\top)\top = \mathbf{A}^\top + (\mathbf{A}\top)\top = \mathbf{A}^\top + \mathbf{A} = \mathbf{A} + \mathbf{A}^\top
    ]
  • 结论:无论 (\mathbf{A}) 是否对称,(\mathbf{A} + \mathbf{A}^\top) 必为对称矩阵。

4. 张量长度问题

问题:形状为 ((2,3,4)) 的张量 Xlen(X) 的输出是什么?

解答

  • 在 Python 的深度学习框架(如 PyTorch/TensorFlow)中,len(X) 返回张量 第一个维度(轴0) 的长度。
  • 示例:形状 ((2,3,4)) 的 Xlen(X) = 2

通用规则

  • 对任意形状的张量,len(X) 始终对应 轴0的长度(即最外层维度)。

5. 张量广播除法分析

操作A / A.sum(axis=1)

关键步骤

  1. 求和维度A.sum(axis=1) 对每行求和,生成形状为 ((m,)) 的向量(假设 A 为 (m \times n) 矩阵)。
  2. 广播机制:除法操作会自动将 ((m,)) 扩展为 ((m,1)),再广播到每列进行逐元素除法。
  3. 结果形状:与原始矩阵 A 相同,但每行元素被该行总和归一化。

示例

import numpy as np
A = np.array([[1,2], [3,4]])
# A.sum(axis=1) = [3,7],广播后为 [[3,3], [7,7]]
result = A / A.sum(axis=1, keepdims=True)  # 显式保持维度

6. 张量求和形状变化

问题:形状 ((2,3,4)) 的张量在轴0、1、2上求和后的形状。

解答

求和轴 输出形状 解释
轴0 ((3,4)) 消除第一维,保留后两维
轴1 ((2,4)) 消除中间维,保留首尾两维
轴2 ((2,3)) 消除最后一维,保留前两维

7. 张量范数计算

函数行为linalg.norm 对高维张量的处理

实验观察

  • 输入:形状为 ((a,b,c,…)) 的张量。
  • 默认行为(以 NumPy 为例):
    • 计算 所有元素的 Frobenius 范数(即 (\sqrt{\sum x_{ijk…}^2}))。
  • 指定轴计算:可通过 axis 参数计算特定轴的范数(如 axis=0 计算沿第一维的范数)。

通用规则

  • 无参数调用时,返回 整个张量的范数,与形状无关。
  • 指定轴时,输出维度减少对应轴。

总结表格

问题类型 核心结论
矩阵转置性质 转置操作满足双重逆、加法分配律,并能构造对称矩阵
张量长度与操作 len(X) 返回轴0长度;求和操作消除指定轴
广播与范数 广播依赖维度扩展,范数默认计算全局值
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐