不同维度矩阵相乘

前言

在深度学习中经常会遇到不同维度的矩阵相乘的情况,本文会通过一些例子来展示不同维度矩阵乘法的过程。

总体原则:在高维矩阵中取与低维矩阵相同维度的子矩阵来与低维矩阵相乘,结果再按子矩阵的排列顺序还原为高维矩阵。相乘结果的维度与原来的高维矩阵一致。
具体来说,当一方为一维矩阵时,另一方取其最后一维子矩阵来做乘法;当两方都是大于等于2维的矩阵时,取各自的最后两维构成的子矩阵来做乘法,其他维度体现结果的拼接信息,不参与运算(为batch训练提供了便利,batch中各样本的顺序在矩阵运算前后保持一致)。

实例:下面我们从低维到高维,依次演示不同维度矩阵相乘的结果。

二维乘一维

二维矩阵依次取出一维的行向量与一维矩阵做内积

#二维乘一维
import numpy as np

a = np.linspace(1,4,4).reshape(2,2)
b = np.array([1,1])
c = np.matmul(a,b)
print('a:\n',a)
print('b:\n',b)
print('ab:\n',c)

在这里插入图片描述

三维乘一维

三维矩阵包含两个二维矩阵,分别将这两个二维矩阵与一维矩阵相乘(乘积为一维),结果按原来的顺序拼接起来,构成一个二维矩阵

#三维乘一维
import numpy as np

a = np.linspace(1,8,8).reshape(2,2,2)
b = np.array([1,1])
c = np.matmul(a,b)
print('a:\n',a)
print('b:\n',b)
print('ab:\n'
在MATLAB中,矩阵是其核心数据结构之一,用于执行各种线性和非线性的数学运算。对于不同维度矩阵,MATLAB提供了丰富的操作和运算。以下是一些常见的矩阵运算及其适用场景: 1. **一维向量和二维矩阵**: - 向量和标量的运算:向量可以直接与标量进行加减乘除运算,得到的结果是一个扩展的向量或矩阵。 - 矩阵矩阵相加减:相同维度矩阵才能相加减,结果矩阵具有相同的维度和大小。 2. **矩阵乘法**(Matrix Multiplication): - **内积(dot product)**:两个向量的点积操作,返回一个标量。 - **矩阵乘法(matrix multiplication)**:如果一个矩阵是另一个矩阵的转置且列数匹配,可以相乘,结果是第一个矩阵的行数乘第二个矩阵的列数。对于一般情况,只有当第一个矩阵的列数等于第二个矩阵的行数时,矩阵乘法才可能进行。 3. **矩阵元素操作**: - **数组索引**:通过行和列的索引来访问或修改特定元素,例如 `A(i,j)`。 - **广播**:当对不同维度矩阵进行运算时,MATLAB会自动调整较小矩阵的尺寸以匹配较大矩阵维度。 4. **转置(Transpose)**: - `A.'` 或 `transpose(A)`:将矩阵的行变为列,列变为行。 5. **矩阵分解**: - **LU分解**(`[L,U]=lu(A)`):将矩阵分解为下三角矩阵L和上三角矩阵U。 - **SVD分解**(`[U,S,V]=svd(A)`):奇异值分解,分解为三个矩阵,U是左奇异矩阵,S是对角矩阵,V是右奇异矩阵。 6. **卷积(Convolution)**: - 对于多维矩阵,MATLAB提供`conv2`函数用于二维卷积。 相关问题: 1. MATLAB中的广播机制如何应用于矩阵运算? 2. 如何在MATLAB中使用LU分解解决线性方程组? 3. SVD分解在哪些机器学习任务中被广泛应用?
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>