位置: IT常识 - 正文

【Pytorch】torch. matmul()(pytorch .pt)

编辑:rootadmin
【Pytorch】torch. matmul() 目录简介torch.matmul()语法作用举例情形1: 一维 * 一维情形2: 二维 * 二维情形3: 一维 * 二维情形4: 二维 * 一维情形5:两个参数至少为一维且至少一个参数为 N 维(其中 N > 2),则返回**批处理矩阵乘法**第一个参数为N维,第二个参数为一维时第一个参数为一维,第二个参数为二维时高维 * 高维时参考结语

推荐整理分享【Pytorch】torch. matmul()(pytorch .pt),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:pytorch torchscript,pytorch torchscript,pytorch.optim,pytorch torch.load,pytorchtools,pytorch with torch.nograd,pytorch with torch.nograd,pytorch with torch.nograd,内容如对您有帮助,希望把文章链接给更多的朋友!

简介

Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~   ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研 学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!   唯有努力💪   本文仅记录自己感兴趣的内容

torch.matmul()语法

torch.matmul(input, other, *, out=None) → Tensor

作用

两个张量的矩阵乘积

行为取决于张量的维度,如下所示:

如果两个张量都是一维的,则返回点积(标量)。如果两个参数都是二维的,则返回矩阵-矩阵乘积。如果第一个参数是一维的,第二个参数是二维的,为了矩阵乘法的目的,在它的维数前面加上一个 1。在矩阵相乘之后,前置维度被移除。如果第一个参数是二维的,第二个参数是一维的,则返回矩阵向量积。如果两个参数至少为一维且至少一个参数为 N 维(其中 N > 2),则返回批处理矩阵乘法如果第一个参数是一维的,则将 1 添加到其维度,以便批量矩阵相乘并在之后删除。如果第二个参数是一维的,则将 1 附加到其维度以用于批量矩阵倍数并在之后删除非矩阵(即批次)维度是广播的(因此必须是可广播的)例如,如果输入是(j×1×n×n)(j \times 1 \times n \times n)(j×1×n×n) 张量另一个是 (k×n×n)(k \times n \times n)(k×n×n)张量,out 将是一个 (j×k×n×n)(j \times k \times n \times n)(j×k×n×n) 张量

请注意,广播逻辑在确定输入是否可广播时仅查看批处理维度,而不是矩阵维度

例如

如果输入是 (j×1×n×m)(j \times 1 \times n \times m)(j×1×n×m) 张量另一个是 (k×m×p)(k \times m \times p)(k×m×p) 张量即使最后两个维度(即矩阵维度)不同,这些输入对于广播也是有效的out 将是一个 (j×k×n×p)(j \times k \times n \times p)(j×k×n×p) 张量

该运算符支持 TensorFloat32。

在某些 ROCm 设备上,当使用 float16 输入时,此模块将使用不同的向后精度

举例情形1: 一维 * 一维

如果两个张量都是一维的,则返回点积(标量)

tensor1 = torch.Tensor([1,2,3])tensor2 =torch.Tensor([4,5,6])ans = torch.matmul(tensor1, tensor2)print('tensor1 : ', tensor1)print('tensor2 : ', tensor2)print('ans :', ans)print('ans.size :', ans.size())

ans = 1 * 4 + 2 * 5 + 3 * 6 = 32

情形2: 二维 * 二维

如果两个参数都是二维的,则返回矩阵-矩阵乘积 也就是 正常的矩阵乘法 (m * n) * (n * k) = (m * k)

tensor1 = torch.Tensor([[1,2,3],[1,2,3]])tensor2 =torch.Tensor([[4,5],[4,5],[4,5]])ans = torch.matmul(tensor1, tensor2)print('tensor1 : ', tensor1)print('tensor2 : ', tensor2)print('ans :', ans)print('ans.size :', ans.size())

情形3: 一维 * 二维

如果第一个参数是一维的,第二个参数是二维的,为了矩阵乘法的目的,在它的维数前面加上一个 1 在矩阵相乘之后,前置维度被移除

tensor1 = torch.Tensor([1,2,3]) # 注意这里是一维tensor2 =torch.Tensor([[4,5],[4,5],[4,5]])ans = torch.matmul(tensor1, tensor2)print('tensor1 : ', tensor1)print('tensor2 : ', tensor2)print('ans :', ans)print('ans.size :', ans.size())

tensor1 = torch.Tensor([1,2,3]) 修改为 tensor1 = torch.Tensor([[1,2,3]])

发现一个结果是[24., 30.] 一个是[[24., 30.]]

【Pytorch】torch. matmul()(pytorch .pt)

所以,当一维 * 二维时, 开始变成 1 * m(一维的维度),也就是一个二维, 再进行正常的矩阵运算,得到[[24., 30.]], 然后再去掉开始增加的一个维度,得到[24., 30.]

想象为二维 * 二维(前置维度为1),最后结果去掉一个维度即可

情形4: 二维 * 一维

如果第一个参数是二维的,第二个参数是一维的,则返回矩阵向量积

tensor1 =torch.Tensor([[4,5,6],[7,8,9]])tensor2 = torch.Tensor([1,2,3])ans = torch.matmul(tensor1, tensor2)print('tensor1 : ', tensor1)print('tensor2 : ', tensor2)print('ans :', ans)print('ans.size :', ans.size())

理解为:

把第一个二维中,想象为多个行向量第二个一维想象为一个列向量行向量与列向量进行矩阵乘法,得到一个标量再按照行堆叠起来即可

情形5:两个参数至少为一维且至少一个参数为 N 维(其中 N > 2),则返回批处理矩阵乘法第一个参数为N维,第二个参数为一维时tensor1 = torch.randn(10, 3, 4)tensor2 = torch.randn(4)print(torch.matmul(tensor1, tensor2).size())

(4) 先添加一个维度 (4 * 1) 得到(10 * 3 * 4) *( 4 * 1) = (10 * 3 * 1) 再删除最后一个维度(添加的那个) 得到结果(10 * 3)

tensor1 = torch.randn(10,2, 3, 4) #tensor2 = torch.randn(4)print(torch.matmul(tensor1, tensor2).size())

(10 * 2 * 3 * 4) * (4 * 1) = (10 * 2 * 3) 【抵消4,删1】

第一个参数为一维,第二个参数为二维时tensor1 = torch.randn(4)tensor2 = torch.randn(10, 4, 3)print(torch.matmul(tensor1, tensor2).size())

tensor2 中第一个10理解为批次, 10个(4 * 3) (1 * 4)与每个(4 * 3) 相乘得到(1,3),去除1,得到(3) 批次为10,得到(10,3)

tensor1 = torch.randn(4)tensor2 = torch.randn(10,2, 4, 3)print(torch.matmul(tensor1, tensor2).size())

这里批次理解为[10, 2]即可

tensor1 = torch.randn(4)tensor2 = torch.randn(10,4, 2,4,1)print(torch.matmul(tensor1, tensor2).size())

个人理解:当一个参数为一维时,它要去匹配另一个参数的最后两个维度(二维 * 二维)

比如上面的例子就是(1 * 4) 匹配 (4,1), 批次为(10,4,2)

高维 * 高维时

注:这不太好理解 … 感觉就是要找准批次,再进行乘法(靠感觉了 哈哈 离谱)

参考https://pytorch.org/docs/stable/generated/torch.matmul.html#torch.matmul结语

文章仅作为个人学习笔记记录,记录从0到1的一个过程

希望对您有一点点帮助,如有错误欢迎小伙伴指正

本文链接地址:https://www.jiuchutong.com/zhishi/300618.html 转载请保留说明!

上一篇:干货!​如何打造我们自己的“ChatGPT”?| 大佬思辨

下一篇:一文看懂Transformer(详解)(一文看懂华为新品发布会)

  • office2019和2016区别(office2019与office2016)

    office2019和2016区别(office2019与office2016)

  • 小米手机一直震动但是没有信息提示(小米手机一直震动重启)

    小米手机一直震动但是没有信息提示(小米手机一直震动重启)

  • 抖音设置隐藏无效视频是什么意思(抖音设置隐藏无效视频)

    抖音设置隐藏无效视频是什么意思(抖音设置隐藏无效视频)

  • i5r5区别(华为i5和r5有啥区别)

    i5r5区别(华为i5和r5有啥区别)

  • iphone8录视频全是杂音怎么办(iphone8录视频全是杂音没有人声)

    iphone8录视频全是杂音怎么办(iphone8录视频全是杂音没有人声)

  • 华为手机如何解除黑名单中的联系人(华为手机如何解除锁屏)

    华为手机如何解除黑名单中的联系人(华为手机如何解除锁屏)

  • 映泰主板u盘启动按f几(映泰主板u盘启动按什么键)

    映泰主板u盘启动按f几(映泰主板u盘启动按什么键)

  • 手机屏幕部分区域失灵(手机屏幕部分区域失灵怎么办)

    手机屏幕部分区域失灵(手机屏幕部分区域失灵怎么办)

  • b站的视频如何保存到本地(B站的视频如何保存到相册)

    b站的视频如何保存到本地(B站的视频如何保存到相册)

  • 接受短信会产生费用么(接受短信会产生流量吗)

    接受短信会产生费用么(接受短信会产生流量吗)

  • 换手机登qq聊天记录还在吗(换手机登qq聊天背景会变吗)

    换手机登qq聊天记录还在吗(换手机登qq聊天背景会变吗)

  • 符合email地址命名格式是什么(符合Email地址命名格式的是)

    符合email地址命名格式是什么(符合Email地址命名格式的是)

  • iphone xr面容坏了可以修吗(iphone xr面容坏了怎么修)

    iphone xr面容坏了可以修吗(iphone xr面容坏了怎么修)

  • 无反能取代单反相机吗(无反相机取代单反相机)

    无反能取代单反相机吗(无反相机取代单反相机)

  • 退出word的正确方式(退出word的正确操作方法是选择文件菜单单击关闭对不对)

    退出word的正确方式(退出word的正确操作方法是选择文件菜单单击关闭对不对)

  • 抖音注销能撤回吗(抖音注销撤回评论能看到吗)

    抖音注销能撤回吗(抖音注销撤回评论能看到吗)

  • 微博将对方拉黑会怎样(微博将对方拉黑 对方知道吗)

    微博将对方拉黑会怎样(微博将对方拉黑 对方知道吗)

  • gw是什么意思(gwp是什么意思)

    gw是什么意思(gwp是什么意思)

  • 手机银行怎么交学费(手机银行怎么交短信通知费)

    手机银行怎么交学费(手机银行怎么交短信通知费)

  • 激活office有什么作用(激活office有什么工具)

    激活office有什么作用(激活office有什么工具)

  • mqtt与socket的区别(tcp和mqtt区别)

    mqtt与socket的区别(tcp和mqtt区别)

  • 微信加密码怎么解除(微信加密码怎么改密码)

    微信加密码怎么解除(微信加密码怎么改密码)

  • win10找不到打印机设备(Win10找不到打印机扫描操作该怎么办)

    win10找不到打印机设备(Win10找不到打印机扫描操作该怎么办)

  • 影响计算机性能的关键部位(影响计算机性能的主要指标有)

    影响计算机性能的关键部位(影响计算机性能的主要指标有)

  • 怎么设置不让别人拉我进群(怎么设置不让别人加我微信)

    怎么设置不让别人拉我进群(怎么设置不让别人加我微信)

  • r15跟r15x有什么区别(oppo r15x和r15参数对比)

    r15跟r15x有什么区别(oppo r15x和r15参数对比)

  • 复合计征消费税例题
  • 应交税费明细科目怎么记账
  • 自建厂房的进项税额能一次性抵扣吗
  • 坏账准备计入营业收入如何报年报
  • 跨年发票问题
  • 企业内部控制调查问卷
  • 可供出售权益工具投资是非货币
  • 融资租赁出租方会计处理
  • 退交税钱
  • 供应商不开票,还告我司不付款
  • 差额征税可以享受1%
  • 包装物计入科目
  • 自己的公司钱能自己用吗
  • 个人所得税的速算扣除数是什么意思
  • 未计提工资
  • 融资租赁销售方会计处理
  • 万份收益是什么意思0.6
  • 每月结转本年利润会计分录
  • 企业注销后注册资金取出需要交税吗
  • 税务局不备案可以吗
  • 商务平台建设
  • 应付职工薪酬年底怎么结转
  • win10 搜狗
  • 如何回到一年前的方法
  • 苹果手机查找对方手机位置看不到
  • 招标场地费计入什么科目
  • thinkphp yii
  • hp workwise service是什么
  • repair.exe是什么软件
  • vue路由点击没反应
  • uniapp安装插件
  • PHP:pcntl_wait()的用法_PCNTL函数
  • 补发的商品要钱吗
  • 最贵的域名是什么名字
  • 企业清算分配的财产金额怎么算出来
  • 有意义的分享
  • php上传图片并显示
  • pytorch sgd优化器
  • 合并会计报表的编制
  • cd oobe是什么命令
  • 国家对国有企业采取的政策是怎样的
  • 公司处置汽车
  • 民办学校学费收现金
  • 转出未交增值税最终怎么转平
  • 公司注册流程百度百科
  • 中小企业发展专项资金亮点 免申即享
  • 已申报营业税未开发票
  • 对公转账需要填备注吗
  • 值税多缴税款能退回来吗
  • 免税收入怎么做会计分录
  • 计提固定资产折旧账务处理
  • 企业股权转让收入会计处理
  • 预付款退回来了怎么做账
  • 其他应付款跨年了
  • 汇算清缴缴纳的所得税怎么做账
  • 个人向对公账户付款有风险吗
  • 购买国家机关证件罪量刑标准
  • 营改增之后账务怎么处理
  • 企业微信对公账户认证
  • 土地增值税怎么预交税款
  • 小企业会计准则主要按照什么计量
  • 通过T_sql语句向其中一次填入一条数据或一次填入多条数据的方式填充数据
  • qq8.2.1版本下载正式版
  • windows sky high
  • ubuntu系统电脑开机键盘亮 屏幕不亮
  • Linux系统下的Samba客户端配置
  • 如何配置sendmail
  • win10怎么把动图设置成壁纸
  • win7怎么在桌面添加时钟
  • c# opengl 3d
  • jquery插件怎么用到自己的网站
  • unity3d操作
  • 智能图片制作
  • javascript零基础
  • django批量创建数据
  • python 断言详细讲解用法及其案例
  • 税务处理决定书属于行政处罚吗
  • 江苏联通客服电话人工服务号码
  • 地税税务登记代码怎么查
  • 教育费附加申报表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设