理解torch.einsum(‘ijk,ilk->ijl‘, a,b)
a = torch.tensor([[[1,2,3,4],[5,6,7,8]]])
a.shape == torch.Size([1,2,4])b = torch.tensor([[[1,2,3,5],[6,1,2,3],[1,3,2,1]]])
b.shape == torch.Size([1,3,4])c = torch.einsum('ijk,ilk->ijl', a,b)
print(c)
tensor([[[34, 26, 17],[78, 74, 45]]])
根据上述例子粗暴的解释torch.einsum('ijk,ilk->ijl', a,b):
对于两个shape为 [1,2,4] ,[1,3,4]的tensor
首先给需要计算的a和b的每个维度作标记,比如输入的a (1=i,2=j,4=k)和b (1=i,3=l,4=k), 输出c(1=i,2=j,3=l)
可以看到ab第0维i相同,所以在第1维第2维做运算。
看成没有第0维的二维矩阵乘法(a乘b的转置), 维度变化为:(2,4) *(4,3)-> (2,3)
可验证:a的第一行乘以 b的转置的第一列=34 ,[1,2,3,4] *[1,2,3,5] = 1+2*2+3*3+4*5= 34
理解torch.einsum(‘ijk,ilk->ijl‘, a,b)相关推荐
- Pytorch中, torch.einsum详解。
爱因斯坦简记法:是一种由爱因斯坦提出的,对向量.矩阵.张量的求和运算的求和简记法. 在该简记法当中,省略掉的部分是:1)求和符号与2)求和号的下标 省略规则为:默认成对出现的下标(如下例1中的i和例2 ...
- 通俗理解torch.distributed.barrier()工作原理
1.背景介绍 在pytorch的多卡训练中,通常有两种方式,一种是单机多卡模式(存在一个节点,通过torch.nn.DataParallel(model)实现),一种是多机多卡模式(存在一个节点或者多 ...
- torch.einsum() 用法说明
关联网站: einops官网 torch.einsum( equation , * operands ) → Tensor 对输入元素operands沿指定的维度.使用爱因斯坦求和符号的乘积求和. 参 ...
- 阅读源码-理解torch.utils.data、torch.utils.data.Dataset、torch.utils.data.DataLoader的工作方式
文章目录 目标 Dataset DataLoader 应用 Dataset DataLoader 测试 知识点 Python splitlines()方法 python filter()函数 暂时先写 ...
- 深入理解 TORCH.NN
原文地址:WHAT IS TORCH.NN REALLY? 本人英语学渣,如有错误请及时指出以便更正,使用的源码可点击原文地址进行下载. pytorch提供了许多优雅的类和模块帮助我们构建与训练网络, ...
- Pytorch之深入理解torch.nn.Parameter()
先看一段代码: import torch import torch.nn as nn a=torch.tensor([1,2],dtype=torch.float32) print(a) print( ...
- 直观理解 torch.nn.Unfold
torch.nn.Unfold 是把batch中的数据按 C.Kernel_W.Kernel_H 打包,详细解释参考: PyTorch中torch.nn.functional.unfold函数使用详解 ...
- tf.einsum—爱因斯坦求和约定
1. einsum记法 如果你像我一样,发现记住PyTorch/TensorFlow中那些计算点积.外积.转置.矩阵-向量乘法.矩阵-矩阵乘法的函数名字和签名很费劲,那么einsum记法就是我们的救星 ...
- 【序列召回推荐】(task6)多兴趣召回Comirec-SA
note Comirec-SA基于attention的多兴趣建模,论文中先通过attention提取单一兴趣,再推广到多兴趣建模.另外使用贪心算法优化带有准确度+多样性的目标函数. DR把MIND的a ...
最新文章
- 【OkHttp】OkHttp 源码分析 ( 网络框架封装 | OkHttp 4 迁移 | OkHttp 建造者模式 )
- html底部导航_松鼠导航 | 优质资源网站荟萃
- Windows脚本编码器算法分析与破译
- 送书 | 222Beta多样性限制性排序CPCoA/CCA/RDA/LDA
- ERROR streaming.StreamExecution: Query topic_lcc [id =xx, runId=xx] terminated with error
- 软件设计师备考知识点02
- linux efi分区安装grub2,GitHub - beatfan/UEFI_grub2: uefi 版本 grub2,可以引导多系统,以及linux的安装...
- C语言一个数组中随机抽取5个数字
- 华为NP课程笔记27-QINQ概述
- dlib实现人脸对齐方法
- linux配置基于pptp的多用户多出口ip的vpn,PPTP配置多ip出口vpn
- upc组队赛6 Bumped!【最短路】
- Think twice, code once.
- 【译文】学习深度学习的四个步骤
- Android手机端编程开发软件合集(一)
- 装饰工程预算方案的审查
- 推荐一款自动更新 Docker 镜像与容器的神器 Watchtower
- 对象存储2:数据存储类型-文件存储、块存储、对象存储详解
- 逻辑思维不强的适合学java嘛_逻辑思维能力的培养很重要吗
- 给站长与网络推广人员的文章