pytorch 中矩阵乘法
torch.mm(mat1, mat2, out=None)
其中 $\operatorname{mat} 1 \in \mathbb{R}^{n \times m}, \operatorname{mat} 2 \in \mathbb{R}^{m \times d} $ ,输出的 $out \in \mathbb{R}^{n \times d} $ 。
该函数一般只用来计算两个二维矩阵的矩阵乘法,并且不支持 broadcast 操作。
2、三维带 batch 的矩阵乘法 torch.bmm()
由于神经网络训练一般采用 mini-batch,经常输入的时三维带 batch 的矩阵,所以提供
torch.bmm(bmat1, bmat2, out=None)
其中 $bmat 1 \in \mathbb{R}^{b \times n \times m} , bmat 2 \in \mathbb{R}^{b \times m \times d}$ , 输入出的 $out \in \mathbb{R}^{b \times n \times d} $ 。 该函数的两个输入必须是三维矩阵并且第一维相同(表示Batch维度),不支持 broadcast 操作
3、多维矩阵乘法 torch.matmul()
torch.matmul(input, other, out=None)
支持broadcast操作,使用起来比较复杂。针对多维数据 matmul() 乘法,可以认为该乘法使用使用两个参数的后两个维度来计算,其他的维度都可以认为是batch维度。
假设两个输入的维度分别是 input(1000×500×99×11), other(500×11×99)那么我们可以认为 torch.matmul(input, other, out=None) 乘法首先是进行后两位矩阵乘法得到 (99×11)×(11×99)⇒(99×99) ,然后分析两个参数的 batch size 分别是 (1000×500) 和 500 , 可以广播成为 (1000×500), 因此最终输出的维度是 (1000×500×99×99)。
4、矩阵逐元素 (Element-wise) 乘法 torch.mul()
torch.mul(mat1, other, out=None)
相关文章
- [PHP] include语句的注意事项
- [TCP] tcp连接SYN超时重传次数和超时时间
- [PHP] 编译安装swoole
- [PHP] swoole直接使用二进制包
- [PHP] php使用event扩展的io复用测试
- [PHP]正则表达式\w和\W区别
- [MySQL] 使用force index强制使用索引
- [HTTP]解决406 not acceptable 错误
- [PHP] 接口增加recaptcha行为验证
- [PHP] Workerman中的注册树模式
- [日常] 解决mysql localhost可以连接但是127.0.0.1不能连接
- [日常] ubuntu下安装php pdo扩展和导入数据库
- [Nginx] nginx配置域名反代后端端口
- [PHP] 使用适配器模式处理数据库对象
- [PHP]使用策略模式消除if else
- [日常] win10开启和安装ubuntu子系统
- [PHP] 解释FastCGI与PHP-FPM的关系
- [PHP] stream_set_blocking非阻塞模式影响fgets fread函数
- [日常] 解决PHP Warning: Module 'mysqli' already loaded in Unknown on line 0
- [PHP]PHP请求在PHP-FPM下的生命周期