优化网站seo策略,佛山高端网站设计,给教育类做网站,百度网站收录链接提交人工智能之数学基础 线性代数
第五章 张量 文章目录人工智能之数学基础 线性代数前言一、什么是张量#xff1f;1. 阶数#xff08;Order / Rank#xff09;二、3 阶张量的直观理解#x1f330; 示例#xff1a;彩色图像三、张量的基本运算1. 张量加法与标量乘法2. 广播1. 阶数Order / Rank二、3 阶张量的直观理解 示例彩色图像三、张量的基本运算1. 张量加法与标量乘法2. 广播Broadcasting3. 张量缩并Contraction—— 推广的“乘法”(a) **内积点积沿指定轴**np.tensordot 3 阶张量示例(b) **爱因斯坦求和约定Einstein Summation**np.einsum常见用法4. 张量重塑Reshape与转置Transpose5. 沿轴聚合操作Aggregation四、3 阶张量的“乘法”类型详解 模态积Mode-n Product示例Python 实现五、高级张量分解简介六、PyTorch / TensorFlow 中的张量PyTorch 示例七、完整代码示例3D 张量操作汇总八、总结后续资料关注前言虽然“张量”一词在物理学、微分几何中有更广义的定义但在现代数据科学、机器学习和数值计算中张量通常被理解为多维数组multi-dimensional array。本文将从这一实用视角出发系统介绍张量的基本概念、3 维及以上张量的运算规则并提供完整的PythonNumPy / PyTorch代码实现。一、什么是张量1. 阶数Order / Rank张量的“阶”指其维度数量注意不是矩阵的秩阶数名称数学对象NumPy shape 示例0标量Scalar单个数()1向量Vector一维数组(5,)2矩阵Matrix二维数组(3, 4)33 阶张量三维数组(2, 3, 4)nn 阶张量n 维数组(d₁, d₂, ..., dₙ)✅关键点矩阵是 2 阶张量的特例张量 ≠ 必须满足坐标变换规则那是物理定义在深度学习中 多维数组。二、3 阶张量的直观理解一个形状为(I, J, K)的 3 阶张量可视为I 个J×K矩阵堆叠而成如彩色图像3 个通道 × 高 × 宽J 个I×K矩阵沿第 1 维切片K 个I×J矩阵沿第 2 维切片 示例彩色图像# 一张 64×64 的 RGB 图像imagenp.random.rand(64,64,3)# shape: (height, width, channels)第 0 维高度64第 1 维宽度64第 2 维颜色通道R, G, B三、张量的基本运算1. 张量加法与标量乘法要求两个张量形状完全相同或可广播操作逐元素进行importnumpyasnp Anp.random.rand(2,3,4)Bnp.random.rand(2,3,4)CAB# 逐元素相加D2.5*A# 标量乘法2. 广播BroadcastingNumPy 允许不同形状的张量在满足规则下进行运算。Anp.random.rand(2,3,4)# shape (2,3,4)bnp.random.rand(4,)# shape (4,) → 可广播到 (2,3,4)CAb# b 被自动扩展到每个 (i,j,:) 位置广播规则从后往前对齐维度每一维要么相等要么其中一个是 1要么缺失。3. 张量缩并Contraction—— 推广的“乘法”(a)内积点积沿指定轴np.tensordotnp.tensordot(A, B, axes)对A和B的指定轴求和。经典例子矩阵乘法是tensordot的特例Cnp.tensordot(A,B,axes([-1],[0]))# A: (m,n), B: (n,p) → C: (m,p) 3 阶张量示例# A: (2, 3, 4), B: (4, 5, 6)# 想对 A 的第 2 轴size4和 B 的第 0 轴size4做缩并Cnp.tensordot(A,B,axes([2],[0]))# 结果 shape: (2, 3, 5, 6)(b)爱因斯坦求和约定Einstein Summationnp.einsum极其强大且灵活的张量运算工具语法np.einsum(subscripts, operand1, operand2, ...)常见用法Anp.random.rand(2,3,4)Bnp.random.rand(4,5)# 1. 矩阵乘法最后维 × 第一维Cnp.einsum(ijk,kl-ijl,A,B)# shape (2,3,5)# 2. 沿某轴求和迹、均值等sum_over_knp.einsum(ijk-ij,A)# 对 k 求和shape (2,3)# 3. 转置A_transposednp.einsum(ijk-kji,A)# shape (4,3,2)# 4. 逐元素乘 求和类似内积xnp.random.rand(2,3,4)ynp.random.rand(2,3,4)innernp.einsum(ijk,ijk-,x,y)# 标量einsum是处理高维张量的瑞士军刀4. 张量重塑Reshape与转置TransposeTnp.random.rand(2,3,4)# 重塑T_flatT.reshape(-1)# 展平为 (24,)T_reshapedT.reshape(6,4)# (2,3,4) → (6,4)# 转置任意维度重排T_transnp.transpose(T,(2,0,1))# 原 (0,1,2) → 新 (2,0,1)shape (4,2,3)# 等价于T_trans2T.transpose(2,0,1)5. 沿轴聚合操作AggregationTnp.random.rand(2,3,4)mean_axis0T.mean(axis0)# shape (3,4)sum_axis12T.sum(axis(1,2))# shape (2,)max_allT.max()# 标量四、3 阶张量的“乘法”类型详解运算类型描述NumPy 实现逐元素乘A * BA * B模态积Mode-n Product张量 × 矩阵沿某一模式自定义或einsum张量-向量积张量 × 向量缩并一维einsum张量-矩阵积如 Tucker 分解中的核心运算einsum或专用库 模态积Mode-n Product示例设张量 $\mathcal{X} \in \mathbb{R}^{I \times J \times K} $矩阵 $U \in \mathbb{R}^{P \times I} $则mode-1 product定义为Y X × 1 U ∈ R P × J × K \mathcal{Y} \mathcal{X} \times_1 U \in \mathbb{R}^{P \times J \times K}YX×1U∈RP×J×K其中Y ( p , j , k ) ∑ i 1 I X ( i , j , k ) ⋅ U ( p , i ) \mathcal{Y}(p, j, k) \sum_{i1}^I \mathcal{X}(i, j, k) \cdot U(p, i)Y(p,j,k)i1∑IX(i,j,k)⋅U(p,i)Python 实现Xnp.random.rand(3,4,5)# (I,J,K) (3,4,5)Unp.random.rand(2,3)# (P,I) (2,3)# Mode-1 product: X ×₁ UYnp.einsum(pi,ijk-pjk,U,X)# 注意 U 是 (p,i)所以是 piprint(Y shape:,Y.shape)# (2,4,5)同理Mode-2:np.einsum(qj,ijk-iqk, V, X)Mode-3:np.einsum(rk,ijk-ijr, W, X)这是高阶 SVDHOSVD和Tucker 分解的基础。五、高级张量分解简介虽然超出基础范围但值得了解分解描述应用CP 分解将张量表示为秩-1 张量之和推荐系统、信号分离Tucker 分解X G × 1 U ( 1 ) × 2 U ( 2 ) × 3 U ( 3 ) \mathcal{X} \mathcal{G} \times_1 U^{(1)} \times_2 U^{(2)} \times_3 U^{(3)}XG×1U(1)×2U(2)×3U(3)数据压缩、特征提取Tensor Train (TT)链式低秩表示高维函数逼近可使用tensorly库实现importtensorlyastlfromtensorly.decompositionimporttucker Xtl.tensor(np.random.rand(10,10,10))core,factorstucker(X,rank[5,5,5])六、PyTorch / TensorFlow 中的张量深度学习框架中的张量支持 GPU 加速和自动微分。PyTorch 示例importtorch# 创建 3 阶张量Ttorch.randn(2,3,4,requires_gradTrue)# 运算自动记录计算图Utorch.randn(5,2)Ytorch.einsum(pi,ijk-pjk,U,T)# mode-1 product# 反向传播lossY.sum()loss.backward()print(T.grad shape:,T.grad.shape)# (2,3,4)七、完整代码示例3D 张量操作汇总importnumpyasnp# 创建 3 阶张量Xnp.random.rand(2,3,4)print(X shape:,X.shape)# 1. 逐元素运算YX*21# 2. 沿轴求和s0X.sum(axis0)# (3,4)s01X.sum(axis(0,1))# (4,)# 3. tensordot 缩并Anp.random.rand(4,5)Znp.tensordot(X,A,axes([2],[0]))# (2,3,5)# 4. einsum 多种操作# 转置X_tnp.einsum(ijk-kij,X)# mode-1 productUnp.random.rand(7,2)X_mode1np.einsum(pi,ijk-pjk,U,X)# (7,3,4)# 内积innernp.einsum(ijk,ijk-,X,X)# 5. 重塑X_flatX.reshape(-1)X_reshapedX.reshape(6,4)print(Z shape:,Z.shape)print(X_mode1 shape:,X_mode1.shape)print(Inner product:,inner)八、总结概念说明张量 多维数组阶数 维度数基本运算加法、标量乘、广播核心乘法tensordot、einsum推荐模态积张量 × 矩阵沿特定模式用于高阶分解工具NumPyCPU、PyTorch/TensorFlowGPU 自动微分应用视频数据帧×高×宽×通道、医学影像3D MRI、多关系图实体×关系×实体建议对于复杂张量运算优先使用np.einsum它清晰、高效、通用在深度学习中张量是数据的基本载体理解其操作是构建模型的基础。后续python过渡项目部分代码已经上传至gitee后续会逐步更新。资料关注公众号咚咚王giteehttps://gitee.com/wy18585051844/ai_learning《Python编程从入门到实践》《利用Python进行数据分析》《算法导论中文第三版》《概率论与数理统计第四版 (盛骤) 》《程序员的数学》《线性代数应该这样学第3版》《微积分和数学分析引论》《西瓜书周志华-机器学习》《TensorFlow机器学习实战指南》《Sklearn与TensorFlow机器学习实用指南》《模式识别第四版》《深度学习 deep learning》伊恩·古德费洛著 花书《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》《深入浅出神经网络与深度学习(迈克尔·尼尔森MichaelNielsen》《自然语言处理综论 第2版》《Natural-Language-Processing-with-PyTorch》《计算机视觉-算法与应用(中文版)》《Learning OpenCV 4》《AIGC智能创作时代》杜雨张孜铭《AIGC原理与实践零基础学大语言模型、扩散模型和多模态模型》《从零构建大语言模型中文版》《实战AI大模型》《AI 3.0》