【张量乘法】pytorch中的mul、dot、mm、matmul

2024-05-28 09:12

本文主要是介绍【张量乘法】pytorch中的mul、dot、mm、matmul,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

张量的乘法是pytorch等神经网络开发框架中最常见、最基本的操作之一。

1,torch.mul

对应位置的元素相乘。mul即表示张量中对应位置元素的相乘,也是最容易理解的乘法。

import torch
a = torch.tensor([[1, 2], [3, 4]])
b = torch.tensor([[5, 6], [7, 8]])
res = torch.mul(a, b)
print(res)# [[ 5, 12], [21, 32]]

2, torch.dot

表示两个1D向量的点乘:(注意:torch.dot和np.dot用法差异较大
t o r c h . d o t ( [ x 1 , y 1 ] , [ x 2 , y 2 ] ) = x 1 ⋅ x 2 + y 1 ⋅ y 2 (1) torch.dot([x_1,y_1], [x_2,y_2]) =x_1\cdot x_2+ y_1\cdot y_2 \tag{1} torch.dot([x1,y1],[x2,y2])=x1x2+y1y2(1)
两个1D-vector在torch.dot后变成一个标量。实验代码:

res = torch.dot(torch.tensor([2, 3]), torch.tensor([2, 1]))
print(res)
# 7

torch.dot使用有以下要求:

  1. 只针对1D向量;
  2. 向量必须等长;

3,torch.mm

表示矩阵乘法, ( m , n ) × ( n , p ) → ( m , p ) (m,n) \times (n,p) \rightarrow (m, p) (m,n)×(n,p)(m,p)

import torch
a = torch.tensor([[1, 2], [3, 4]])
b = torch.tensor([[5, 6], [7, 8]])
res = torch.mm(a, b)
print(res)
# [[19, 22], [43, 50]]

4,torch.matmul

也表示矩阵乘,在输入2个1D向量时,表现出与torch.dot一样的效果:

res = torch.matmul(torch.tensor([2, 3]), torch.tensor([2, 1]))
print(res)
# 7

输入2个2D向量时,表达的是矩阵乘法,与torch.mm有一样的效果。

import torch# 1D x 1D
res = torch.matmul(torch.tensor([2, 3]), torch.tensor([2, 1]))
print(res)
# 7# 2D x 2D
a = torch.tensor([[1, 2], [3, 4]])
b = torch.tensor([[5, 6], [7, 8]])
res = torch.matmul(a, b)
print(res)
# [[19, 22], [43, 50]]# 1D x 2D
a = torch.tensor([1, 2])
b = torch.tensor([[5, 6], [7, 8]])
res = torch.matmul(a, b)
print(res)
# [19, 22]# 2D x 1D
a = torch.tensor([[1, 2], [3, 4]])
b = torch.tensor([5, 6])
res = torch.matmul(a, b)
print(res)
# [17, 39]# (j, 1, n, n) x (k, n, n) -> (j, k, n, n)
# (j, 1, n, m) x (k, m, p) -> (j, k, n, p)

这篇关于【张量乘法】pytorch中的mul、dot、mm、matmul的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010146

相关文章

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

转发来源:https://swift.ctolib.com/ooooverflow-chinese-ocr.html chinese-ocr 基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别 环境部署 sh setup.sh 使用环境: python 3.6 + tensorflow 1.10 +pytorch 0.4.1 注:CPU环境

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

pytorch国内镜像源安装及测试

一、安装命令:  pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple  二、测试: import torchx = torch.rand(5, 3)print(x)

PyTorch nn.MSELoss() 均方误差损失函数详解和要点提醒

文章目录 nn.MSELoss() 均方误差损失函数参数数学公式元素版本 要点附录 参考链接 nn.MSELoss() 均方误差损失函数 torch.nn.MSELoss(size_average=None, reduce=None, reduction='mean') Creates a criterion that measures the mean squared err

动手学深度学习(Pytorch版)代码实践 -计算机视觉-37微调

37微调 import osimport torchimport torchvisionfrom torch import nnimport liliPytorch as lpimport matplotlib.pyplot as pltfrom d2l import torch as d2l# 获取数据集d2l.DATA_HUB['hotdog'] = (d2l.DATA_U

WSL+Anconda(pytorch深度学习)环境配置

动机 最近在读point cloud相关论文,准备拉github上相应的code跑一下,但是之前没有深度学习的经验,在配置环境方面踩了超级多的坑,依次来记录一下。 一开始我直接将code拉到了windows本地来运行,遇到了数不清的问题(如:torch版本问题、numpy版本、bash命令无法运行等问题),经过请教,决定将project放到linux系统上进行运行。所以安装WSL(Window

02 TensorFlow 2.0:前向传播之张量实战

你是前世未止的心跳 你是来生胸前的记号 未见分晓 怎么把你忘掉                                                                                                                                 《千年》 内容覆盖: convert to tensorreshape

动手学深度学习(Pytorch版)代码实践 -计算机视觉-36图像增广

6 图片增广 import matplotlib.pyplot as pltimport numpy as npimport torch import torchvisionfrom d2l import torch as d2lfrom torch import nn from PIL import Imageimport liliPytorch as lpfrom tor

jnp.matmul和jnp.dot的区别?

jnp.matmul 和 jnp.dot 都是用于矩阵乘法的函数,但它们在处理多维数组(即张量)时有不同的行为。以下是它们的区别和具体用法: jnp.dot 主要用于向量点积和矩阵乘法。对于一维数组,计算向量的点积。对于二维数组,计算标准的矩阵乘法。对于多维数组,按照最后一个维度与倒数第二个维度进行计算。 import jax.numpy as jnp# 向量点积a = jnp.array

pytorch 使用GPU加速常见的问题

pytorch如何使用gpu加速 print(torch.cuda.is_available())# 设置gpu设备device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')# net使用GPUnet.to(device)# 数据copy到gpuinputData = inputData.to(devi