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

  • 荣耀手环怎么调时间(荣耀手环怎么调声音)

    荣耀手环怎么调时间(荣耀手环怎么调声音)

  • 华为mate30和红米k30pro对比(华为mate30和红米k40哪个好)

    华为mate30和红米k30pro对比(华为mate30和红米k40哪个好)

  • iphone11pro max怎么连拍(iphone11pro max怎么插双卡)

    iphone11pro max怎么连拍(iphone11pro max怎么插双卡)

  • 电脑网页打不开怎么回事(电脑网页打不开是什么原因及解决方法)

    电脑网页打不开怎么回事(电脑网页打不开是什么原因及解决方法)

  • 正在恢复iphone固件要多久(正在恢复iphone固件卡住了怎么办)

    正在恢复iphone固件要多久(正在恢复iphone固件卡住了怎么办)

  • 应用内安装其他应用是什么意思(应用内安装其他应用权限在哪)

    应用内安装其他应用是什么意思(应用内安装其他应用权限在哪)

  • 华为nova5自带钢化膜吗(华为nova5是金属机身吗)

    华为nova5自带钢化膜吗(华为nova5是金属机身吗)

  • 电视显示dns异常是什么意思(电视显示dns异常无法上网)

    电视显示dns异常是什么意思(电视显示dns异常无法上网)

  • 抖音视频上传成功但是别人看不到(抖音视频上传成功后看非常卡顿)

    抖音视频上传成功但是别人看不到(抖音视频上传成功后看非常卡顿)

  • word表格打印出来没表格线(word表格打印出来有阴影)

    word表格打印出来没表格线(word表格打印出来有阴影)

  • 华为应用市场里没有微信(华为应用市场里的热门应用怎么删除)

    华为应用市场里没有微信(华为应用市场里的热门应用怎么删除)

  • 抖音注销不了怎么回事(抖音注销不了怎么回事儿)

    抖音注销不了怎么回事(抖音注销不了怎么回事儿)

  • 补了新卡旧卡还能用吗(补了新卡旧卡还能有信号吗?)

    补了新卡旧卡还能用吗(补了新卡旧卡还能有信号吗?)

  • imei可以查到什么(imei可以查手机真伪吗)

    imei可以查到什么(imei可以查手机真伪吗)

  • word自动生成数字序号(word怎么12345自动生成)

    word自动生成数字序号(word怎么12345自动生成)

  • 微信老是被拉进群怎么办(微信老是被拉进群可以设置吗)

    微信老是被拉进群怎么办(微信老是被拉进群可以设置吗)

  • 手机打不开流量怎么回事(苹果手机打不开流量)

    手机打不开流量怎么回事(苹果手机打不开流量)

  • 苹果怎么设置面容支付(苹果怎么设置面容下载app)

    苹果怎么设置面容支付(苹果怎么设置面容下载app)

  • 华为升降摄像头怎么用(华为升降摄像头怎么关闭声音)

    华为升降摄像头怎么用(华为升降摄像头怎么关闭声音)

  • 微信群聊名称修改(微信群聊名称修改后又变回去)

    微信群聊名称修改(微信群聊名称修改后又变回去)

  • 班班通没有声音是怎么回事(班班通没有声音怎么调)

    班班通没有声音是怎么回事(班班通没有声音怎么调)

  • 优酷投屏怎么快进(优酷投屏怎么快进看电视)

    优酷投屏怎么快进(优酷投屏怎么快进看电视)

  • 名片背景怎么设计(如何设置名片背景免费自制)

    名片背景怎么设计(如何设置名片背景免费自制)

  • 拼多多精选推荐怎么关(拼多多精选推荐是自己平时买过的吗)

    拼多多精选推荐怎么关(拼多多精选推荐是自己平时买过的吗)

  • 图虫怎么上传视频卡点(图虫怎么上传视频)

    图虫怎么上传视频卡点(图虫怎么上传视频)

  • 苹果怎么设置不接陌生电话(苹果怎么设置不自动旋转屏幕)

    苹果怎么设置不接陌生电话(苹果怎么设置不自动旋转屏幕)

  • 余利宝提现有手续费吗(余利宝提现要钱吗)

    余利宝提现有手续费吗(余利宝提现要钱吗)

  • 在Linux系统中使用fuser命令来列出进程编号(在linux操作系统中)

    在Linux系统中使用fuser命令来列出进程编号(在linux操作系统中)

  • 集合框架——LinkedList集合源码分析(集合框架有何好处)

    集合框架——LinkedList集合源码分析(集合框架有何好处)

  • 申报未抄税
  • 申报增值税附加税减免项目选错了
  • 企业购买产品
  • 增量留抵税额怎么做分录
  • 原始凭证如何粘贴到记账凭证后面
  • 房屋租赁发票票样
  • 自然人独资企业股东承担连带责任
  • 长期待摊费用如何摊销计算
  • 报销用的发票抬头写什么
  • 金税盘离线开票金额超限怎么处理
  • 所得税年度纳税申报表 从业人数怎么填
  • 个人劳务费 税
  • 资产负债表负债总额怎么看
  • 本期准予抵减税额怎么算
  • 公司现金支付管理办法
  • 拆迁补偿费会计分录怎么写
  • 付汇代扣代缴增值税纳税期限
  • 广告位租赁交印花税吗
  • 房租发票一下全部开出
  • 个人所得税核定征收计算公式
  • 非独立核算的分公司企业所得税怎么申报
  • 发票边上的虚线是什么
  • 继承房产也需要缴税吗
  • 统借统还定义
  • 发票专用章的规格大小
  • 股利分配政策的研究背景
  • 保理利率多少可以买房
  • 建筑业劳务分包怎样算税
  • 资产计税基础是怎么填
  • 其他应收款的二级科目有备用金和老板名可以吗?
  • PHP:mcrypt_enc_get_modes_name()的用法_Mcrypt函数
  • 土地增值税的收费标准
  • 卡洛里山脉
  • php二维数组查询指定值
  • 转出未交增值税借方余额表示什么
  • 运费抵扣的基本原则
  • 百度统计网址
  • 华硕11代笔记本装win10
  • 论文笔记模板
  • defaultpool
  • echarts在地图上标记图标
  • torch.nn.Conv3d
  • idea如何运行别人的vue项目
  • 上下联的方法
  • 所得税多交了不退会不会来查账
  • 织梦怎么套模板
  • ubuntu下mysql版本升级到5.7
  • 一般纳税人之间转让土地使用权交哪些税金
  • 建筑设备租赁如何交税
  • 暂估收入时会有哪些凭证
  • 临时工工资怎么报个税
  • 增值税销项税的借贷方向
  • 增值税在实际计算时采取什么方法
  • 材料折扣会计分录
  • 个人账户转公司账户附言写什么
  • 主播收钱违法吗
  • 计入税金及附加借方的内容
  • 结算账户分为哪几种?其用途结构如何?
  • 劳务报酬个税如何入账
  • 现金流水账怎么做表格
  • 总分类账建账顺序
  • macos越狱教程
  • win+tab键
  • ubuntu netbook
  • ramaint.exe - ramaint是什么进程 有什么用
  • win10系统ie浏览器不见了
  • window10 蓝牙鼠标
  • windows7库功能
  • app塔防游戏
  • qt rgb颜色
  • node 内存泄漏
  • unity3d操作
  • android 开源
  • android 简历模板
  • jabsorb笔记_几个小例子第1/2页
  • 关于明确干部挂职工作期间有关待遇的
  • 党费的缴纳是否扣除所得税
  • 车船税完税证明查询官网
  • 新车交购置税的流程图
  • 发票清单盖章样本图片
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设