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

  • 华为畅享50pro怎么设置虚拟按键(华为畅享50pro怎么打开OTG)

    华为畅享50pro怎么设置虚拟按键(华为畅享50pro怎么打开OTG)

  • 手机打国际长途电话费用(手机打国际长途)(手机打国际长途怎么打便宜)

    手机打国际长途电话费用(手机打国际长途)(手机打国际长途怎么打便宜)

  • 支付宝天弘基金扣款怎么关闭(支付宝天弘基金管理有限公司是什么)

    支付宝天弘基金扣款怎么关闭(支付宝天弘基金管理有限公司是什么)

  • 怎么给airpods2充电(airpods2使用技巧充电)

    怎么给airpods2充电(airpods2使用技巧充电)

  • findx2和华为p40pro对比(findx2和p40pro对比)

    findx2和华为p40pro对比(findx2和p40pro对比)

  • 微信注销的手机号多久能换绑(微信注销的手机号多久能绑定其他微信)

    微信注销的手机号多久能换绑(微信注销的手机号多久能绑定其他微信)

  • iphone自带的ar在哪(苹果手机里的ar系统怎么打开)

    iphone自带的ar在哪(苹果手机里的ar系统怎么打开)

  • 安卓手机如何打开.pps文件(安卓手机如何打开.p7b文件)

    安卓手机如何打开.pps文件(安卓手机如何打开.p7b文件)

  • 苹果账单待处理是什么意思(苹果账单待处理怎么取消)

    苹果账单待处理是什么意思(苹果账单待处理怎么取消)

  • 苹果4有录屏功能嘛(苹果4有录屏功能么)

    苹果4有录屏功能嘛(苹果4有录屏功能么)

  • 12123申请换号码审核要多久(12123申请换号码审核要多久,想起原来注册号码)

    12123申请换号码审核要多久(12123申请换号码审核要多久,想起原来注册号码)

  • 奔腾g4400能换什么cpu(奔腾g4400多少针脚)

    奔腾g4400能换什么cpu(奔腾g4400多少针脚)

  • 魅族手机忘记密码怎么办被锁定了(魅族手机忘记密码能刷机吗)

    魅族手机忘记密码怎么办被锁定了(魅族手机忘记密码能刷机吗)

  • caztl20是什么型号手机(caz-al20)

    caztl20是什么型号手机(caz-al20)

  • 手机浏览器收藏夹的位置(手机浏览器收藏的网址突然没了)

    手机浏览器收藏夹的位置(手机浏览器收藏的网址突然没了)

  • 华为mate30支持5g网吗(华为mate30支持5G频段)

    华为mate30支持5g网吗(华为mate30支持5G频段)

  • 微信语音如何录音(微信语音如何录下来发给别人)

    微信语音如何录音(微信语音如何录下来发给别人)

  • 抖音头像有一圈蓝色是什么(抖音头像有一圈白色是什么情况)

    抖音头像有一圈蓝色是什么(抖音头像有一圈白色是什么情况)

  • 用手机号码怎么找人(用手机号码怎么样能找到对方位置)

    用手机号码怎么找人(用手机号码怎么样能找到对方位置)

  • ps怎么抠掉不要的部分

    ps怎么抠掉不要的部分

  • 隐藏路由器的SSID广播来防止他人连接(路由器隐藏ssid后果严重)

    隐藏路由器的SSID广播来防止他人连接(路由器隐藏ssid后果严重)

  • ios11和ios10有什么区别详细分析 ios11和ios10对比评(iphone11 iphone10区别)

    ios11和ios10有什么区别详细分析 ios11和ios10对比评(iphone11 iphone10区别)

  • top命令  实时显示系统运行状态(top命令可以看到哪些信息)

    top命令 实时显示系统运行状态(top命令可以看到哪些信息)

  • 外出经营活动税收管理证明在哪里办理
  • 退税进度显示国库退库失败怎么办 是什么原因
  • 企业取得房租收据怎么写
  • 医疗垃圾处理费标准2020
  • 简述入伙、退伙的含义与退伙的形式
  • 外币账户月末怎么结汇
  • 未交增值税金额公式
  • 增值税10%怎么算
  • 车辆抵押登记费用可以退回吗
  • 外商投资企业要交房产税吗
  • 人工成本如何申报个税
  • 普票的销项可以抵扣吗?
  • 领款凭证可以当收据吗
  • 如何查询所属税务所
  • 税前扣除是好事吗
  • 文档自动填写怎么弄
  • 未开票收入如何记账
  • 上网的操作
  • php源码怎么上传到服务器
  • 没有发票只有收据可以报销吗
  • win11dev预览修复工具
  • 成本法转为权益法追溯的理解
  • php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
  • 前端几种下载文件
  • 中科大ustc-guest
  • 开发商违法
  • 【角色扮演】
  • 常见反爬策略
  • 无人驾驶基础知识
  • vue-element
  • 预算会计的核算对象是什么
  • 织梦小说采集
  • 核定征收企业注册
  • 库存商品的科目设置
  • 专用发票超过360天未认证
  • sql server游标
  • mysql在表中添加一个新的属性
  • mysql存储过程的作用
  • 差额征税的专用发票能抵扣吗
  • 代缴员工个人所得税怎么做账
  • 全年一次性奖金税率表2023最新
  • 用现金支付的款项
  • 线上销售会计分录
  • 母子公司之间的借款
  • 发放股票股利如何影响计算基本每股收益
  • 申请个税退税账号是什么
  • 工会经费支出审批表
  • 主营业务收入净额指的是什么
  • 零余额账户银行回单
  • 年末结余资金
  • 企业的支出包括( )支出
  • 收付实现制和权责发生制区别
  • 公司的应付账款
  • 实用的银行转账怎么转
  • windows使用痕迹是指是什么
  • sql将两个表的数据合并
  • sqlsever导入数据时出现ole db连接数据无效
  • win7桌面怎么设置到d盘
  • mac系统如何安装双系统
  • 毕竟近义词语
  • 如何灵活使用蒙恬
  • linux文件复制到windows
  • win10专业版装不上m1136驱动
  • win8系统怎么设置桌面
  • windows8.1控制面板
  • html5能做游戏吗
  • linux中shell脚本编写
  • sed 处理多行
  • unity3D游戏开发
  • 安卓网络编程面试题
  • android图片透明度怎么设置
  • javascript例题
  • python爬虫从入门到精通
  • js动态添加trtd
  • 税务局高风险是怎么办
  • 进口肉的税率是多少
  • 消费税的纳税义务的发生时间是如何规定的
  • 拒绝税务机关检查
  • 进一步深造是什么意思
  • 如何查询企业上市情况
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设