三三文章网 - 科技知识大全是专业科技新媒体网站。网站著眼于新一代科技新闻的全面及时处理报导,让网民在外面第二时间交待全球新一代的科技资讯。内容涵括AI+、互联网、IT、创业投资、核定、区块链、智能硬件等领域

“使张量操作的可读”;的编程工具,开源3年标准星4.3k,现在终于ICLR2022接收-量子比特,

  • 时间:
  • 浏览:0

它是GitHub标星4.3k的张量操作工具Einops,开源3年后终于碰上了顶峰会议!

这是一种统一的、通用的操作张量结构的方法,是基于爱因斯坦约定(Einstein summation convention)的想法而开发的,能够大幅提高代码的可读性和修正性。

同时,Einops支持Pytorch、TensorFlow、Chainer、Jax、Gluon等多个深度学习框架,以及Numpy、Cupy等张量计算框架。

ICLR2022作为Oral论文收到的消息一出,常年嫖娼的“精神股东”们就表示,Einops确实是“当之无愧”。

但是,从这个早上开始名声就在外,有无数大牛站台的道具,扔到山顶后并没有一帆风顺。

爱因斯坦比和合的约定更容易使用的表记法我们首先来理解一下Einops的基本原理吧。

其设计思路来自于爱因斯坦1916年提出的爱因斯坦求和约定,也被称为爱因斯坦表记法(Einstein notation)

该方法的规定是:在一组积中,当两个变量的足标相同时,对相同的两个足标求和。例如,下图中的aibi:

这样写的好处是不要在公式中出现大量的和符号,这样看起来更简洁。

Numpy的Einsum是模仿爱因斯坦寻求约定的方法,可以说这个想法已经被广泛使用。

Einops正是在Einsum的基础上进行了许多改进,为张量操作过程中一些以前难以解决的问题提供了更方便的方案。

例如,如果仅通过Pytorch结合两种方法(Einops、来实现超分辨率(Super-resolution),则后者将大大降低代码冗余:

△上:原版下:结合Einops

Einops组合的代码不需要特别的指令PixelShuffle。您还可以看到,还使用了模块调用nn.ReLU和nn.Sequential。

最后得到的输出结果不包含虚假坐标,也可以在帧之间迁移。

为什么能做这个?

这取决于Einops的本质:这是一种用于变换模式的新标记方法,可以确保元素在张量中的位置和坐标变量的值的一对一映射。

△Numpy与Einops动作的对应关系

爱因斯坦与加法约定(Einsum)相比,Einops有几个附加特征:

通过减少仅存在于输入中的坐标(例如,可以使用max-reduction方法)的重复输出中的坐标(张量、值对于新坐标的索引是相同的),使式两侧的所有坐标的标记唯一(Einsum、在这些特征中输入和输出描述为张量的维和坐标的预期顺序,这使得基于Einops的代码可读性和可修改性非常高,用户也不必每次操作都存储或估计张量的形状。

同时,将输入坐标(或其组成)与输出坐标连接,从而在设计上不破坏结构。

括号所示坐标的组成和分解也是Einops的主要创新点:

根据上述特征,模式有利于更灵活地处理高维数据。

例如,注意力机构函数接受形状为[batch,seq,channel]的[张量]kqv,并且Einops可将其高度、宽度和深度合成一维。

同时,张量的报头和batch维也可以分组,从而保证了注意力报头的独立处理,从而成为三维数据的多头注意力:

类似地,通过修改输入/输出的结构,其它神经块也可以在Einops模式下完成“升级”。

论文接收不是一帆风顺的Einops作者是来自俄罗斯的AlexRogozhnikov,拥有莫斯科大学的数学和物理学博士学位,目前的主要研究领域是机器学习。

Einops正是他最热的开发,不仅在GitHub收获了4.3k星,特斯拉AI高管、FAIR实验室工程师之家:

但是,作者将论文整理成论文后发表在峰会上时,认为这篇论文“读起来像技术博客”、“缺乏创新性”、“缺乏严密性”,因此收到了3分(拒绝)的意见。

但主席最终给予了一发定音的肯定评价,并同意将其作为Oral论文接受。

拥有Einops的使用者特意贴出议长最后的评价,如下所述。

不管这篇论文被如何广泛鼓励,至少对开发者AlexRogozhnikov本人来说,可以说是一个正面的结果。

论文:https://openreview.net/forumid=oapKSVM2bcj

GitHub链接:https://GitHub.com/arogozhnikov/Einops

作者主页:http://arogozhnikov.GitHub.io/about/