位置: 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(详解)(一文看懂华为新品发布会)

  • 怎么能找回微信删除的好友(腾讯公众号客服怎么能找回微信)

    怎么能找回微信删除的好友(腾讯公众号客服怎么能找回微信)

  • 苹果13pro雷达扫描仪怎么用(苹果13pro激光雷达扫描仪)

    苹果13pro雷达扫描仪怎么用(苹果13pro激光雷达扫描仪)

  • 华为怎么关闭省电模式(华为怎么关闭省电模式提示)

    华为怎么关闭省电模式(华为怎么关闭省电模式提示)

  • 三星快充失效(三星充电器无法快充)

    三星快充失效(三星充电器无法快充)

  • ipad不能qq群语音通话(平板qq不能语音通话)

    ipad不能qq群语音通话(平板qq不能语音通话)

  • hls协议由哪几部分组成(hl7协议是指)

    hls协议由哪几部分组成(hl7协议是指)

  • 抖音手机号怎么解绑(抖音手机号怎么搜索好友)

    抖音手机号怎么解绑(抖音手机号怎么搜索好友)

  • 标题居中正文怎么也居中了(标题居中怎么设置在哪里Word)

    标题居中正文怎么也居中了(标题居中怎么设置在哪里Word)

  • 华为p40pro镜头需要贴膜吗(华为p40 pro镜头)

    华为p40pro镜头需要贴膜吗(华为p40 pro镜头)

  • 魅族fastbootmode卡住(魅族手机fastboot mode卡住不动怎)

    魅族fastbootmode卡住(魅族手机fastboot mode卡住不动怎)

  • 朋友圈没有屏蔽为什么看不到(朋友圈没有屏蔽别人为什么别人看不到)

    朋友圈没有屏蔽为什么看不到(朋友圈没有屏蔽别人为什么别人看不到)

  • 监控rtsp是什么意思(摄像机 rtsp)

    监控rtsp是什么意思(摄像机 rtsp)

  • 华为移动定制版和全网通有什么区别(华为移动定制版和普通版有什么区别)

    华为移动定制版和全网通有什么区别(华为移动定制版和普通版有什么区别)

  • 手机总是卡机是什么原因引起的(手机老是卡机)

    手机总是卡机是什么原因引起的(手机老是卡机)

  • word怎么设置标题样式(word怎么设置标记)

    word怎么设置标题样式(word怎么设置标记)

  • 拼多多实名认证在哪看(拼多多实名认证可以认证几个号)

    拼多多实名认证在哪看(拼多多实名认证可以认证几个号)

  • wps里怎么查找内容(wps怎么查找内容全部导出)

    wps里怎么查找内容(wps怎么查找内容全部导出)

  • iwatch闹钟时间怎么调(iwatch闹钟如何设置)

    iwatch闹钟时间怎么调(iwatch闹钟如何设置)

  • 如何判断小米蓝牙耳机充满电(如何判断小米蓝牙好坏)

    如何判断小米蓝牙耳机充满电(如何判断小米蓝牙好坏)

  • 华为p30和nova5区别(p30和nova5哪个好)

    华为p30和nova5区别(p30和nova5哪个好)

  • 小马激活win7下载(小马激活win7旗舰版下载)

    小马激活win7下载(小马激活win7旗舰版下载)

  • 怎么关闭win11安全中心 win11安全中心关闭步骤(怎么关闭win11安装软件提示)

    怎么关闭win11安全中心 win11安全中心关闭步骤(怎么关闭win11安装软件提示)

  • Win11任务管理器在哪? Widows11打开任务管理器的技巧(win11任务管理器在哪里打开)

    Win11任务管理器在哪? Widows11打开任务管理器的技巧(win11任务管理器在哪里打开)

  • 没有网络摄像头 ,您将无法运行 Win11(有没有不需要网络的摄像头)

    没有网络摄像头 ,您将无法运行 Win11(有没有不需要网络的摄像头)

  • 一文读懂ChatGPT模型原理(一文读懂谢娜张杰购房跳单事件始末)

    一文读懂ChatGPT模型原理(一文读懂谢娜张杰购房跳单事件始末)

  • Vue生产环境调试的方法(vue 生产环境)

    Vue生产环境调试的方法(vue 生产环境)

  • 营业外收入需要缴纳什么税
  • 担任多家公司办事处主任
  • 捐赠税前扣除比例表
  • 个人所得税的税目分多少种
  • 税法规定的增值税
  • 所得税费用影响净利润吗
  • 国资委无偿划拨资产不上税吗
  • 中期票据怎么入账
  • 预收账款多说明什么
  • 资产减值损失是
  • 劳务费交增值税还要交个税吗
  • 关于小规模纳税人的说法错误的有
  • 二手房房产税税率
  • 方案讲解:关于员工激励的税收筹划
  • 转出未交增值税在借方是什么意思
  • 增值税进项抵扣期限及认证期限
  • 个人社保部分工资计入哪个科目
  • 多交增值税如何退回
  • 在建工程一次还是多次
  • 有留抵怎么交增值税
  • 运费发票备注栏样板
  • 跨年的物业费如何记账
  • 不开票收入申报是含税收入吗
  • 手机cpu性能排行榜2023最新天梯图
  • 劳务公司开发票,劳务公司怎么转取收入
  • 域名怎么交费
  • 新购固定资产账务处理
  • 外币兑换业务的银行
  • 前端后端选择
  • vue 获取当前url
  • sql实现mysql的分页功能
  • 购车的进项税怎么抵扣
  • 代发工资怎么做
  • 农药普通发票可以抵扣
  • 其他应收款的会计分录有哪些
  • php调用变量
  • 帝国cms视频教程
  • python smote算法
  • 银行结算方式有哪几种方式?其具体内容是什么?
  • 不动产进项税额抵扣从什么时候开始
  • 权责发生制和收付实现制例题
  • 企业所得税年报申报时间
  • 医疗费用属于什么费用
  • 城建税退税分录怎么做
  • 预售期的房子是否可以买卖
  • 收回发票会计分录
  • 对外投资需要股东会决议吗
  • 固定资产怎么做账
  • 承兑汇票需要做账吗
  • 公司投资款怎么算
  • 企业租赁厂区的管理制度
  • 关于低值易耗品的评估说法正确的有()
  • 暂估应付账款余额在贷方
  • sql server无法连接服务器的原因
  • MySQL关键字执行顺序
  • mysql密码忘了怎么办?
  • linux搭建socks代理
  • ubuntu zen3
  • RedHat 9.0下Apache+PHP+MySQL服务器安装配置
  • cad90度角
  • Win8出现奇怪爆音的完美解决方法
  • kernel headers not found for target kernel
  • win10系统找不到无线网络连接
  • [置顶]马粥街残酷史
  • javascript几种数据类型
  • nodejs image
  • node 加密解密
  • 一个简单的防偷技巧
  • js str.match
  • windbg调试驱动
  • shell去重计数
  • javascript详细介绍
  • Javascript字符串对象函数
  • js弹出对话框的命令
  • jquery中validate
  • 佛山顺德怎么坐地铁到广州
  • 上海自贸试验区临港新片区
  • 地税跟国税是在一起吗
  • 呼市地方税务局电话
  • 非居民企业机构场所核定征收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设