1. 二维矩阵乘法 torch.mm()

torch.mm(mat1, mat2, out=None),其中mat1(\(n\times m\)),mat2(\(m\times d\)),输出out的维度是(\(n\times d\))。

该函数一般只用来计算两个二维矩阵的矩阵乘法,并且不支持broadcast操作。

2. 三维带batch的矩阵乘法 torch.bmm()

由于神经网络训练一般采用mini-batch,经常输入的时三维带batch的矩阵,所以提供torch.bmm(bmat1, bmat2, out=None),其中bmat1(\(b\times n \times m\)),bmat2(\(b\times m \times d\)),输出out的维度是(\(b \times n \times d\))。

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

3. 多维矩阵乘法 torch.matmul()

torch.matmul(input, other, out=None)支持broadcast操作,使用起来比较复杂。

针对多维数据 matmul()乘法,我们可以认为该matmul()乘法使用使用两个参数的后两个维度来计算,其他的维度都可以认为是batch维度。假设两个输入的维度分别是input(\(1000 \times 500 \times 99 \times 11\)), other(\(500 \times 11 \times 99\))那么我们可以认为torch.matmul(input, other, out=None)乘法首先是进行后两位矩阵乘法得到\((99 \times 11) \times (11 \times 99)\Rightarrow(99 \times 99)\) ,然后分析两个参数的batch size分别是 \(( 1000 \times 500)\) 和 \(500\) , 可以广播成为 \((1000 \times 500)\), 因此最终输出的维度是(\(1000 \times 500 \times 99 \times 99\))。

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

torch.mul(mat1, other, out=None),其中other乘数可以是标量,也可以是任意维度的矩阵,只要满足最终相乘是可以broadcast的即可

5. 两个运算符 @ 和 *

  • @:矩阵乘法,自动执行适合的矩阵乘法函数
  • *element-wise乘法

『PyTorch』矩阵乘法总结的更多相关文章

  1. 『PyTorch』第二弹重置_Tensor对象

    『PyTorch』第二弹_张量 Tensor基础操作 简单的初始化 import torch as t Tensor基础操作 # 构建张量空间,不初始化 x = t.Tensor(5,3) x -2. ...

  2. 『PyTorch』第十二弹_nn.Module和nn.functional

    大部分nn中的层class都有nn.function对应,其区别是: nn.Module实现的layer是由class Layer(nn.Module)定义的特殊类,会自动提取可学习参数nn.Para ...

  3. 『PyTorch』第九弹_前馈网络简化写法

    『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下 在前面的例子中,基本上都是将每一层的输出直接作为下一层的 ...

  4. 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下

    『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 # Author : Hellcat # Time : 2018/2/11 import torch as t import t ...

  5. 『PyTorch』第三弹重置_Variable对象

    『PyTorch』第三弹_自动求导 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Varibale包含三个属性: data ...

  6. 『PyTorch』第十弹_循环神经网络

    RNN基础: 『cs231n』作业3问题1选讲_通过代码理解RNN&图像标注训练 TensorFlow RNN: 『TensotFlow』基础RNN网络分类问题 『TensotFlow』基础R ...

  7. 『PyTorch』第五弹_深入理解Tensor对象_下:从内存看Tensor

    Tensor存储结构如下, 如图所示,实际上很可能多个信息区对应于同一个存储区,也就是上一节我们说到的,初始化或者普通索引时经常会有这种情况. 一.几种共享内存的情况 view a = t.arang ...

  8. 『PyTorch』第五弹_深入理解autograd_上:Variable属性方法

    在PyTorch中计算图的特点可总结如下: autograd根据用户对variable的操作构建其计算图.对变量的操作抽象为Function. 对于那些不是任何函数(Function)的输出,由用户创 ...

  9. 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上

    总结一下相关概念: torch.Tensor - 一个近似多维数组的数据结构 autograd.Variable - 改变Tensor并且记录下来操作的历史记录.和Tensor拥有相同的API,以及b ...

随机推荐

  1. 【软件工具】Git 使用总结

    本地库就是由 对象 和 引用 构成的,或者叫 Repositories;下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 ...

  2. MyBatiesPlus+Redis分布式缓存

    一.开启二级缓存 cache-enabled: true # mybatis-plus相关配置 mybatis-plus: # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 X ...

  3. mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'

    查询mysql具体版本 SELECT @@VERSION 问题分析:mysql版本8.0.13,在给新用户授权时,发生了变化: 1064 - You have an error in your SQL ...

  4. vue2.0中文文档

    地址1: 链接: https://pan.baidu.com/s/1uEzM990A-W-fl23ref2zww 提取码: rkpt 复制这段内容后打开百度网盘手机App,操作更方便哦 地址2:htt ...

  5. Commons-Collections(二)之set

    MultiSet set我们都知道,它是无序的,并且是不允许出现重复元素的.但有些场景我们不需要顺序,但是我们需要知道指定key出现的个数(比如每样产品ID对应的剩余数量这种统计信息),那么用Mult ...

  6. 关于ByteArrayInputStream和ByteArrayOutputStream

    package stream.byte_; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; imp ...

  7. Hibernate框架基本使用

    时间:2017-1-16 00:36 --什么是Hibernate    Hibernate是一个开放源代码的关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用对象编程思 ...

  8. 及上一篇linux安装mysql的说明

    mysql8.0安全策略 1 密码规定:数字英文大小写加特殊符号组成(可以不按照规则,详情去百度设置) 2. mysql数据库用户密码字段不再是password 而是authentication_st ...

  9. ffmpeg命令 从网络摄像头录制视频

    安装 sudo apt-get install ffmpeg 录制视频为record.mp4文件 ffmpeg -y -i rtsp://cameral_ip:port -vcodec copy -a ...

  10. SpringBoot笔记(6)

    一.数据访问(SQL) 1.数据源的自动配置-HikariDataSource 1.导入JDBC场景 <dependency> <groupId>org.springframe ...