深度学习|pytorch基本运算-hadamard积、点积和矩阵乘法

【1】引言

pytorch对张量的基本运算和线性代数课堂的教学有一些区别,至少存在hadamard积、点积和矩阵乘法三种截然不同的计算方法。

【2】hadamard积

hadamard积是元素对位相乘,用"*"连接张量,代码:

python 复制代码
# 导入包
import torch
# 生成多维张量
y=torch.tensor([[1,2,3],
               [1,2,3],
                [1,2,3]])
z=torch.tensor([[1,2,3],
               [3,2,1],
                [0,2,6]])
# hadamard积运算
a=y*z
# 打印
print(a)

代码运行后,按照对位相乘的效果输出:

++图1 hadamard积运算++

【3】点积

点积是元素对位相乘后再求和,用"torch.sum(*)"连接张量,代码:

python 复制代码
# 导入包
import torch
# 生成多维张量
y=torch.tensor([[1,2,3],
               [1,2,3],
                [1,2,3]])
z=torch.tensor([[11,2,3],
               [3,12,1],
                [10,2,16]])
# hadamard积运算
a=y*z
# 打印
print(a)
# 点积运算
b=torch.sum(y*z)
# 打印
print(b)

代码运行后,按照先对位相乘、再求和的效果输出:

++图2 点积运算++

【4】矩阵乘法

矩阵乘法是第一个矩阵的第i行与第二个矩阵第j列相乘的效果,用"torch.mm()"连接矩阵,就是大家所熟悉的线性代数中得矩阵乘法,代码:

python 复制代码
# 导入包
import torch
# 生成多维张量
y=torch.tensor([[11,2,3],
               [1,12,30],
                [10,12,3]])
z=torch.tensor([[11,12,3],
               [3,12,10],
                [10,2,16]])
# hadamard积运算
a=y*z
# 打印
print(a)
# 点积运算
b=torch.sum(y*z)
# 打印
print(b)
# 矩阵乘法
c=torch.mm(y,z)
# 打印
print(c)

代码运行后,按照第一个矩阵的第i行与第二个矩阵第j列相乘的效果输出:

++图3 矩阵乘法运算++

【5】总结

本次学习了pytorch基本运算,包括hadamard积、点积和矩阵乘法:

  • hadamard积是元素对位相乘,用"*"连接张量
  • 点积是元素对位相乘后再求和,用"torch.sum(*)"连接张量
  • 矩阵乘法是第一个矩阵的第i行与第二个矩阵第j列相乘的效果,用"torch.mm()"连接矩阵,就是大家所熟悉的线性代数中得矩阵乘法。
相关推荐
Hello Mr.Z1 小时前
使用pytorch创建/训练/推理OCR模型
人工智能·pytorch·python
wan5555cn1 小时前
文字生视频的“精准”代码设定的核心原则本质是最小化文本语义与视频内容的KL散度
人工智能·笔记·深度学习·音视频
点云SLAM7 小时前
PyTorch 中.backward() 详解使用
人工智能·pytorch·python·深度学习·算法·机器学习·机器人
Learn Beyond Limits8 小时前
Transfer Learning|迁移学习
人工智能·python·深度学习·神经网络·机器学习·ai·吴恩达
程序员三明治9 小时前
三、神经网络
人工智能·深度学习·神经网络
fsnine11 小时前
深度学习——残差神经网路
人工智能·深度学习
和鲸社区11 小时前
《斯坦福CS336》作业1开源,从0手搓大模型|代码复现+免环境配置
人工智能·python·深度学习·计算机视觉·语言模型·自然语言处理·nlp
THMAIL12 小时前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm
fFee-ops12 小时前
73. 矩阵置零
线性代数·矩阵
Gyoku Mint12 小时前
NLP×第六卷:她给记忆加了筛子——LSTM与GRU的贴靠机制
人工智能·深度学习·神经网络·语言模型·自然语言处理·gru·lstm