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)相关推荐

  1. Pytorch中, torch.einsum详解。

    爱因斯坦简记法:是一种由爱因斯坦提出的,对向量.矩阵.张量的求和运算的求和简记法. 在该简记法当中,省略掉的部分是:1)求和符号与2)求和号的下标 省略规则为:默认成对出现的下标(如下例1中的i和例2 ...

  2. 通俗理解torch.distributed.barrier()工作原理

    1.背景介绍 在pytorch的多卡训练中,通常有两种方式,一种是单机多卡模式(存在一个节点,通过torch.nn.DataParallel(model)实现),一种是多机多卡模式(存在一个节点或者多 ...

  3. torch.einsum() 用法说明

    关联网站: einops官网 torch.einsum( equation , * operands ) → Tensor 对输入元素operands沿指定的维度.使用爱因斯坦求和符号的乘积求和. 参 ...

  4. 阅读源码-理解torch.utils.data、torch.utils.data.Dataset、torch.utils.data.DataLoader的工作方式

    文章目录 目标 Dataset DataLoader 应用 Dataset DataLoader 测试 知识点 Python splitlines()方法 python filter()函数 暂时先写 ...

  5. 深入理解 TORCH.NN

    原文地址:WHAT IS TORCH.NN REALLY? 本人英语学渣,如有错误请及时指出以便更正,使用的源码可点击原文地址进行下载. pytorch提供了许多优雅的类和模块帮助我们构建与训练网络, ...

  6. Pytorch之深入理解torch.nn.Parameter()

    先看一段代码: import torch import torch.nn as nn a=torch.tensor([1,2],dtype=torch.float32) print(a) print( ...

  7. 直观理解 torch.nn.Unfold

    torch.nn.Unfold 是把batch中的数据按 C.Kernel_W.Kernel_H 打包,详细解释参考: PyTorch中torch.nn.functional.unfold函数使用详解 ...

  8. tf.einsum—爱因斯坦求和约定

    1. einsum记法 如果你像我一样,发现记住PyTorch/TensorFlow中那些计算点积.外积.转置.矩阵-向量乘法.矩阵-矩阵乘法的函数名字和签名很费劲,那么einsum记法就是我们的救星 ...

  9. 【序列召回推荐】(task6)多兴趣召回Comirec-SA

    note Comirec-SA基于attention的多兴趣建模,论文中先通过attention提取单一兴趣,再推广到多兴趣建模.另外使用贪心算法优化带有准确度+多样性的目标函数. DR把MIND的a ...

最新文章

  1. 【OkHttp】OkHttp 源码分析 ( 网络框架封装 | OkHttp 4 迁移 | OkHttp 建造者模式 )
  2. html底部导航_松鼠导航 | 优质资源网站荟萃
  3. Windows脚本编码器算法分析与破译
  4. 送书 | 222Beta多样性限制性排序CPCoA/CCA/RDA/LDA
  5. ERROR streaming.StreamExecution: Query topic_lcc [id =xx, runId=xx] terminated with error
  6. 软件设计师备考知识点02
  7. linux efi分区安装grub2,GitHub - beatfan/UEFI_grub2: uefi 版本 grub2,可以引导多系统,以及linux的安装...
  8. C语言一个数组中随机抽取5个数字
  9. 华为NP课程笔记27-QINQ概述
  10. dlib实现人脸对齐方法
  11. linux配置基于pptp的多用户多出口ip的vpn,PPTP配置多ip出口vpn
  12. upc组队赛6 Bumped!【最短路】
  13. Think twice, code once.
  14. 【译文】学习深度学习的四个步骤
  15. Android手机端编程开发软件合集(一)
  16. 装饰工程预算方案的审查
  17. 推荐一款自动更新 Docker 镜像与容器的神器 Watchtower
  18. 对象存储2:数据存储类型-文件存储、块存储、对象存储详解
  19. 逻辑思维不强的适合学java嘛_逻辑思维能力的培养很重要吗
  20. 给站长与网络推广人员的文章

热门文章

  1. 学生上课考勤系统jsp_高校学生考勤管理系统JSP+SQL
  2. 阿木p200四旋翼配置经验笔记
  3. Java实现 LeetCode 152 乘积最大子序列
  4. iOS 动态下载系统提供的多种中文字体
  5. 用Python制作mini翻译器
  6. “蔚来杯“2022牛客暑期多校训练营10补题
  7. Netty源码剖析之内存池和对象池设计流程
  8. Nginx与服务器集群
  9. Jenkins安装时Web页面报错:该Jenkins实例似乎已离线
  10. 中科院计算所培训中心四季度课程安排