PyTorch之torch.matmul函数的使用及说明

 更新时间:2024年09月09日 10:06:22   作者:Midsummer-逐梦  
PyTorch的torch.matmul是一个强大的矩阵乘法函数,支持不同维度张量的乘法运算,包括广播机制。提供了矩阵乘法的语法,参数说明,以及使用示例,帮助理解其应用方式和乘法规则

一、简介

torch.matmul 用于两维或更高维张量的矩阵乘法操作。

它支持广播机制,并且能够处理不同形状和维度的张量,适用于广泛的应用场景。

二、语法

torch.matmul 函数的基本语法如下:

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

三、参数

  • input:第一个输入张量。
  • other:第二个输入张量,与 input 进行矩阵乘法。
  • out(可选):存储输出结果的张量。

四、示例

下面通过几个简单的例子来演示 torch.matmul 的用法。

示例 1:二维矩阵乘法

import torch

# 创建两个二维张量
a = torch.tensor([[1, 2], [3, 4]])
b = torch.tensor([[5, 6], [7, 8]])

# 使用 torch.matmul 进行矩阵乘法
result = torch.matmul(a, b)
print(a)
print(b)
print("二维矩阵乘法结果:")
print(result)

输出:

tensor([[1, 2],
        [3, 4]])
tensor([[5, 6],
        [7, 8]])
二维矩阵乘法结果:
tensor([[19, 22],
        [43, 50]])

在这个例子中,torch.matmul 对两个二维张量进行了标准的矩阵乘法。

示例 2:高维张量乘法

import torch
# 创建两个高维张量
a = torch.randn(2, 3, 4)
b = torch.randn(2, 4, 5)

# 使用 torch.matmul 进行高维张量乘法
result = torch.matmul(a, b)
print("高维张量乘法结果的形状:")
print(result.shape)

输出:

高维张量乘法结果的形状:
torch.Size([2, 3, 5])

在这个例子中,torch.matmul 对两个高维张量进行了矩阵乘法,并且结果张量的形状是 [2, 3, 5],符合矩阵乘法的规则。

没有了解过的童鞋可能对这里的乘法规则有所迷惑,因此解释一下:对于高维($\geq$3维度)矩阵乘法,只要保持最后两个维(低二维)的矩阵满足普通矩阵乘法规则,高维的各维度保持相等或对应维度中有一个为1即可。

在这里第2维为(3,4)与(4,5)满足普通矩阵乘法要求,然后高维相等直接对应位置矩阵相乘即可。

下面的广播机制是高维为1的情况,此时会触发广播机制完成高维矩阵的乘法。

示例 3:广播机制

import torch
# 创建两个可以广播的张量
a = torch.randn(2, 3, 4)
b = torch.randn(4, 5)

# 使用 torch.matmul 进行广播机制的矩阵乘法
result = torch.matmul(a, b)
print("广播机制下的矩阵乘法结果的形状:")
print(result.shape)

输出:

广播机制下的矩阵乘法结果的形状:
torch.Size([2, 3, 5])

在这个例子中,b 张量的形状是 [4, 5],通过广播机制,与 a 张量的形状 [2, 3, 4] 进行了兼容,并得到了结果张量的形状 [2, 3, 5]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python通过getattr函数获取对象的属性值

    Python通过getattr函数获取对象的属性值

    这篇文章主要介绍了Python通过getattr函数获取对象的属性值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python协程的四种实现方式总结

    Python协程的四种实现方式总结

    今天继续给大家介绍Python关知识,本文主要内容是Python协程的四种实现方式。文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-01-01
  • 如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱

    如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱

    SQLAlchemy 是一个 Python ORM 工具包,它提供使用 Python 访问 SQL 数据库的功能。这篇文章主要介绍了如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱,需要的朋友可以参考下
    2019-11-11
  • Python中的装饰器用法详解

    Python中的装饰器用法详解

    这篇文章主要介绍了Python中的装饰器用法,以实例形式详细的分析了Python中的装饰器的使用技巧及相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • 教你用Python实现Excel表格处理

    教你用Python实现Excel表格处理

    今天教各位小伙伴怎么用Python处理excel,文中有非常详细的代码示例及相关知识总结,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Python按要求从多个txt文本中提取指定数据的代码示例

    Python按要求从多个txt文本中提取指定数据的代码示例

    本文给大家介绍了Python如何按要求从多个txt文本中提取指定数据,遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件,文中有相关的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2023-12-12
  • python中yield函数的用法详解

    python中yield函数的用法详解

    这篇文章主要为大家详细介绍了python中yield函数的用法,数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Django安装配置mysql的方法步骤

    Django安装配置mysql的方法步骤

    这篇文章主要介绍了Django安装配置mysql的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 使用keras根据层名称来初始化网络

    使用keras根据层名称来初始化网络

    这篇文章主要介绍了使用keras根据层名称来初始化网络,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Tkinter 组件Scrollbar的具体使用

    Tkinter 组件Scrollbar的具体使用

    本文主要介绍了Tkinter 组件Scrollbar的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论