目录

  • 一、函数介绍
  • 二、常见用法
    • 2.1 两个一维向量的乘积运算
    • 2.2 两个二维矩阵的乘积运算
    • 2.3 一个一维向量和一个二维矩阵的乘积运算
    • 2.4 一个二维矩阵和一个一维向量的乘积运算
    • 2.5 其他

一、函数介绍

pytorch中两个张量的乘法可以分为两种:

  • 两个张量对应元素相乘,在PyTorch中可以通过torch.mul函数(或*运算符)实现;
  • 两个张量矩阵相乘,在PyTorch中可以通过torch.matmul函数实现;

torch.matmul(input, other) → Tensor
计算两个张量input和other的矩阵乘积
【注意】:matmul函数没有强制规定维度和大小,可以用利用广播机制进行不同维度的相乘操作。

二、常见用法

torch.matmul()也是一种类似于矩阵相乘操作的tensor连乘操作。但是它可以利用python中的广播机制,处理一些维度不同的tensor结构进行相乘操作。这也是该函数与torch.bmm()区别所在。

2.1 两个一维向量的乘积运算

若两个tensor都是一维的,则返回两个向量的点积运算结果:

import torch
x = torch.tensor([1,2])
y = torch.tensor([3,4])
print(x,y)
print(torch.matmul(x,y),torch.matmul(x,y).size())

运行结果:
tensor([1, 2]) tensor([3, 4])
tensor(11) torch.Size([])

2.2 两个二维矩阵的乘积运算

若两个tensor都是二维的,则返回两个矩阵的矩阵相乘结果:

import torch
x = torch.tensor([[1,2],[3,4]])
y = torch.tensor([[5,6,7],[8,9,10]])
print(torch.matmul(x,y),torch.matmul(x,y).size())

运行结果:
tensor([[21, 24, 27],[47, 54, 61]]) torch.Size([2, 3])

2.3 一个一维向量和一个二维矩阵的乘积运算

若input为一维,other为二维,则先将input的一维向量扩充到二维(维数前面插入长度为1的新维度),然后进行矩阵乘积,得到结果后再将此维度去掉,得到的与input的维度相同。

import torch
x = torch.tensor([1,2])
y = torch.tensor([[5,6,7],[8,9,10]])
print(torch.matmul(x,y),torch.matmul(x,y).size())

运行结果:
tensor([21, 24, 27]) torch.Size([3])

【分析】:首先将x维度从(2)扩充为(,2),然后将x(,2) 与y(2,3)进行相乘,得到(,3),最后去掉一维部分,得到(3)

2.4 一个二维矩阵和一个一维向量的乘积运算

若input为二维,other为一维,则先将other的一维向量扩充到二维(维数后面插入长度为1的新维度),然后进行矩阵乘积,得到结果后再将此维度去掉,得到的与other的维度相同。

import torch
x = torch.tensor([[1,2,3],[4,5,6]])
y = torch.tensor([7,8,9])
print(torch.matmul(x,y),'\n',torch.matmul(x,y).size())

运行结果:
tensor([ 50, 122])
torch.Size([2])

【分析】:首先y维度从(3)扩充为(3,),然后将x(2,3)与x(2,)进行相乘,得到(2,),最后去掉一维部分,得到(2)

【总结】:2.3和2.4基本类似,唯一不同的是2.3中一维向量和二维矩阵的乘积运算需要在一维向量前面插入长度为1的新维度(x为一维向量,y为二维矩阵);2.4中二维矩阵和一维向量的乘积运算需要在一维向量后面插入长度为1的新维度(x为二维矩阵,y为一维向量)。

2.5 其他

其他的暂时用不上,有需要的可以自行查阅相关资料~

参考:https://cloud.tencent.com/developer/article/1802317

PyTorch疑难杂症(1)——torch.matmul()函数用法总结相关推荐

  1. gather torch_浅谈Pytorch中的torch.gather函数的含义

    pytorch中的gather函数 pytorch比tensorflow更加编程友好,所以准备用pytorch试着做最近要做的一些实验. 立个flag开始学习pytorch,新开一个分类整理学习pyt ...

  2. tf.matmul函数用法

    tf.matmul函数用法 函数:tf.matmul 表示:将矩阵 a 乘以矩阵 b,生成a * b matmul(a,b,transpose_a=False,transpose_b=False,ad ...

  3. torch.bmm()和torch.matmul()函数的用法和区别,矩阵相乘

    torch.bmm()和torch.matmul()都是矩阵乘法的运算函数,区别是,torch.matmul更强大. 两者都可以支持3维的矩阵运算,实际是第一维只是找下标,后面2维才是矩阵,然后对应做 ...

  4. Pytorch中的torch.where函数

    首先我们看一下Pytorch中torch.where函数是怎样定义的: @overload def where(condition: Tensor) -> Union[Tuple[Tensor, ...

  5. pytorch中的torch.squeeze()函数

    torch.squeeze(input, dim=None, out=None) squeeze()函数的功能是维度压缩.返回一个tensor(张量),其中 input 中大小为1的所有维都已删除. ...

  6. [一起学习pytorch吧]之torch.sign函数

    Hello,大家好!今天为大家讲解以下pytorch的sign函数. torch.sign(input, out=None) → Tensor 该函数的作用就是输出input通过sign函数后的张量, ...

  7. Pytorch中的torch.gather函数的含义

    pytorch中的gather函数 pytorch比tensorflow更加编程友好,所以准备用pytorch试着做最近要做的一些实验. 立个flag开始学习pytorch,新开一个分类整理学习pyt ...

  8. torch.contiguous()函数用法

    在看代码的时候发现了torch.contiguous()这个函数,那么它有什么用途呢? 1)背景知识 首先得知道一个tensor的shape和stride的区别.以二维矩阵为例,shape = [ro ...

  9. torch.roll() 函数用法

    Pytorch 官方文档:https://pytorch.org/docs/master/generated/torch.roll.htmlhttps://pytorch.org/docs/maste ...

最新文章

  1. 写一个ArrayList类的动态代理类
  2. C# 调用ArcGIS server admin api
  3. java内部float,Java中的float是什么?
  4. 计算机技术可以学音乐吗,音响工程师可以练出来吗?
  5. gradle 项目打包成多个jar包_永不失优雅——高效管理Springboot项目
  6. OpenStack进入第二阶段需要解决的“七宗罪”
  7. 直接拿来用!Vue.js 第三方常用插件盘点 | CSDN 博文精选
  8. Python迭代列表
  9. Matlab之abs、double与char函数
  10. 用系统自带的SSH实现两台linux密钥认证访问
  11. 深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
  12. ESN学习笔记——echotorch(1)介绍
  13. 骑士cms任意代码执行
  14. python生成快递取件码没了怎么办_货到速递易,但没有收到取件码,怎么办
  15. dw中css目标规则命名,CSS名规则.doc
  16. 55 - 字符流中第一个不反复的字符
  17. Python实现常见的排序算法
  18. PerfEnforce Demonstration: Data Analytics with Performance Guarantees
  19. 常见向量范数和矩阵范数及其MATLAB实现
  20. 几个经典app制作网站

热门文章

  1. JS中var和let区别
  2. 通如短信设备TR-F3X27工业无线通信路由器
  3. godaddy虚拟主机java_Godaddy国外主机
  4. android文件目录管理软件,文件管理竟如此轻松 安卓软件《文件大师HD》
  5. 使用python制作的简易自习室座位预约系统
  6. python语言创意绘画是什么意思_创意绘画是什么?
  7. shell中 反引号用法
  8. 对华为鸿蒙系统评价装置价格,华为鸿蒙OS系统75寸智慧屏!华为第二贵售价高达万元...
  9. 关于float/double的取值范围、精度和表示
  10. html商品图片放大插件,PS图片无损放大/图像处理插件-ON1 Resize 2018.5