博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
矩阵乘法_随笔1: PyTorch中矩阵乘法总结
阅读量:5898 次
发布时间:2019-06-19

本文共 913 字,大约阅读时间需要 3 分钟。

1bb852700b2134e75496d2afe465ce73.png

导读:本文尝试总结在写PyTorch代码时候用到的各种乘法的用法,本文所述内容并非系统且严谨的描述,仅作为本人笔记会议使用。

1. 二维矩阵乘法

, 其中
,
, 输出
的维度是
。该函数
一般只用来计算两个二维矩阵的矩阵乘法,而且不支持broadcast操作。

2. 三维带Batch矩阵乘法

由于神经网络训练一般采用mini-batch,经常输入的是三维带batch矩阵,所以提供

,其中
,
, 输出
的维度是
。该函数的两个输入必须是三维矩阵且第一维相同(表示Batch维度),不支持broadcast操作。

3. "混合"矩阵乘法

支持broadcast操作,使用起来比较复杂,建议参考pytorch官方文档。

a7af7380b51036c656dd81c8bb4cd0b2.png

特别 ,针对多维数据

乘法,我们可以认为该
乘法使用使用两个参数的后两个维度来计算,其他的维度都可以认为是batch维度。假设两个输入的维度分别是
,
,那么我们可以认为
乘法首先是进行后两位矩阵乘法得到
,然后分析两个参数的batch size分别是
, 可以广播成为
, 因此最终输出的维度是

4. 矩阵逐元素(Element-wise)乘法

,其中
乘数可以是标量也可以是任意维度的矩阵,只要满足最终相乘是可以broadcast的即可,即该操作是支持broadcast操作的。
  • 是标量: 例如
    是维度任意的矩阵,
    (一个标量), 那么输出一个矩阵,其中每个值是
    中原值乘以
    , 维度保持不变。
  • 是矩阵: 只要
    的维度可以满足broadcast条件,就可以进行逐元素乘法操作,例如:
import torchA = torch.randn(2,3,4)B = torch.randn(3, 4)print (torch.mul(A,b).shape) # 输出 torch.size([2,3,4)

5. 两个乘法操作符

简单来说,

操作符可以执行矩阵乘法操作,类似
; 而
乘法操作可以执行逐元素矩阵乘法,使用方法类似

注:题图来自于tangerines-fruit-clementines,遵循图片的非商业使用原则。

转载请注明作者与来源:

作者: 非鱼子

知乎专栏:技术随笔

你可能感兴趣的文章
Android应用程序键盘(Keyboard)消息处理机制分析(16)
查看>>
Sysbench 0.5版安装配置
查看>>
统一沟通-技巧-11-Lync-联盟-无法-音频-远程桌面-传文件
查看>>
书摘—你不可不知的心理策略
查看>>
【博客话题】毕业——开始人生的艰苦历程
查看>>
2014.7.30-8.3日广大网友的提问解答(答问题的第2个工作周)
查看>>
Powershell管理系列(二十五)PowerShell操作之获取AD账号及邮箱信息
查看>>
Linux安装telnet
查看>>
【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物...
查看>>
openstack nova修改实例路径,虚拟磁盘路径
查看>>
java.sql.SQLException: Lock wait timeout exceeded --转
查看>>
使用C#进行图像处理的几种方法(转)
查看>>
Ajax原理学习
查看>>
sap scriptfom 多语言翻译
查看>>
实现超级简单的bug管理系统
查看>>
[LeetCode] Find Anagram Mappings 寻找异构映射
查看>>
--Too small initial heap for new size specified
查看>>
黄聪:3分钟学会sessionStorage用法
查看>>
Entity Framework 全面教程详解(转)
查看>>
Windows上Python2.7安装Scrapy过程
查看>>