【Pytorch写代码技巧--Einsum】Einsum详解+常用写法

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
简介: 不知大家在看论文代码的时候是否会常常看见 torch.einsum(),这玩意儿看起来是真的抽象,但是深入了解后发现它原来这么好用。


不知大家在看论文代码的时候是否会常常看见 torch.einsum(),这玩意儿看起来是真的抽象,但是深入了解后发现它原来这么好用。不知大家在看论文代码的时候是否会常常看见 torch.einsum(),这玩意儿看起来是真的抽象,但是深入了解后发现它原来这么好用

一、Introeduction

einsum真名叫做爱因斯坦求和约定,用于简洁的表示转置、内积、外积、各种求和

先看看以下这个例子,有这样的一段代码


R=torch.einsum('ik,jk->ij',A,B)

image.gif

在Einsum中,箭头从左边到右边消失了什么参数,那公式前就加一个带什么参数的求和符。本案例中消失了k,因此我们需要在加上对带k的求和符,转化为数学公式如下

image.gif编辑

对数学敏感的小伙伴可能已经知道这个公式代表什么意思了,但是作为像博主这样愚钝的还是画图看看是什么东西

image.gif

画完图之后我们可以直观的知道这就是将两个矩阵每行向量进行求内积

此外,它的底层代码就是套了很多层的for循环,如果我们不用Einsum来实现以上的功能估计要写半天了


二、Skill

是不是感觉上面的公式很简单神奇,是的Einsum诞生的初衷就是为了简化矩阵的运算,因此博主记录了以下几个常用的矩阵运算用Einsum来实现。假设有以下四个矩阵

image.gif编辑

2.1 求某行、列、维度之和

# 行之和
R=torch.einsum('ij->i',A)
# 列之和
R=torch.einsum('ij->j',A)
# 某维度之和
R=torch.einsum('ijklmn->n',D)

image.gif

2.2 所有元素之和

# 所有元素之和
R=torch.einsum('ijklmn->',D)

image.gif

2.3 转置

# 转置
R=torch.einsum('ij->ji',A)

image.gif

2.4 内积

# 内积
R=torch.einsum('ij,jk->ik',A,B)

image.gif

2.5 外积

# 外积
R=torch.einsum('ij,ik->jk',A,C)

image.gif

2.6 灵活相乘


目录
相关文章
|
7月前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
1478 1
|
7月前
|
机器学习/深度学习 关系型数据库 MySQL
大模型中常用的注意力机制GQA详解以及Pytorch代码实现
GQA是一种结合MQA和MHA优点的注意力机制,旨在保持MQA的速度并提供MHA的精度。它将查询头分成组,每组共享键和值。通过Pytorch和einops库,可以简洁实现这一概念。GQA在保持高效性的同时接近MHA的性能,是高负载系统优化的有力工具。相关论文和非官方Pytorch实现可进一步探究。
903 4
|
7月前
|
自然语言处理 PyTorch 算法框架/工具
自然语言生成任务中的5种采样方法介绍和Pytorch代码实现
在自然语言生成任务(NLG)中,采样方法是指从生成模型中获取文本输出的一种技术。本文将介绍常用的5中方法并用Pytorch进行实现。
285 0
|
1月前
|
存储 物联网 PyTorch
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
**Torchtune**是由PyTorch团队开发的一个专门用于LLM微调的库。它旨在简化LLM的微调流程,提供了一系列高级API和预置的最佳实践
165 59
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
|
7月前
|
数据挖掘 PyTorch 算法框架/工具
人脸识别中的损失函数ArcFace及其实现过程代码(pytorch)--理解softmax损失函数及Arcface
人脸识别中的损失函数ArcFace及其实现过程代码(pytorch)--理解softmax损失函数及Arcface
606 0
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
CNN中的注意力机制综合指南:从理论到Pytorch代码实现
注意力机制已成为深度学习模型的关键组件,尤其在卷积神经网络(CNN)中发挥了重要作用。通过使模型关注输入数据中最相关的部分,注意力机制显著提升了CNN在图像分类、目标检测和语义分割等任务中的表现。本文将详细介绍CNN中的注意力机制,包括其基本概念、不同类型(如通道注意力、空间注意力和混合注意力)以及实际实现方法。此外,还将探讨注意力机制在多个计算机视觉任务中的应用效果及其面临的挑战。无论是图像分类还是医学图像分析,注意力机制都能显著提升模型性能,并在不断发展的深度学习领域中扮演重要角色。
125 10
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现
本文介绍了几种常用的计算机视觉注意力机制及其PyTorch实现,包括SENet、CBAM、BAM、ECA-Net、SA-Net、Polarized Self-Attention、Spatial Group-wise Enhance和Coordinate Attention等,每种方法都附有详细的网络结构说明和实验结果分析。通过这些注意力机制的应用,可以有效提升模型在目标检测任务上的性能。此外,作者还提供了实验数据集的基本情况及baseline模型的选择与实验结果,方便读者理解和复现。
69 0
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch代码实现神经网络
这段代码示例展示了如何在PyTorch中构建一个基础的卷积神经网络(CNN)。该网络包括两个卷积层,分别用于提取图像特征,每个卷积层后跟一个池化层以降低空间维度;之后是三个全连接层,用于分类输出。此结构适用于图像识别任务,并可根据具体应用调整参数与层数。

热门文章

最新文章