-
什么是einops
einops(Einstein-Inspired Notation for operations)是一个 进行tensor的各种变换的包。里面又一些api可以完成特定的工作。其特点就是 利用了一种特殊而高效的参数。并且einops为主流的几个学习框架做了适配,numpy , pytorch, tensorflow, keras… -
优势:
- 比较直观:可以显示出具体变换的效果。
y = x.transpose(0, 2, 3, 1) y = rearrange(x, 'b c h w -> b h w c') //这种形式更加明确,给读者hint里面的具体变换和意义
-
功能:
- 对于rearrange来说,主要的原子功能又三个:<1> 改变维度 <2> composition <3>decomposition 以上的功能可以进行组合,比如不仅 composition 又 decomposition 。但是总的shape相乘的值是相同的。
- 对于reduce,其可以缩减某一个维度的数值或者直接缩减掉这个维度。可以指定缩减的时候的计算规则,比如求平均值 或者 取最大值等。可以利用这个来 转换为**灰度图像, max-pooling(缩减h 和 w), mean pooling(缩减h和w) **
- 可以使用rearrange进行stack和concatenate操作。stack就是将一个list内的tensor进行堆叠,list的length变成第一个维度。concatenate就是将一些tensor拼接到一起,沿着某些轴
- 可以使用rearrange进行维度为1的维度的增加或者消除
- repeat可以将某一个 维度进行 重复,重复的数字要放在 前面