python系列23:张量操作库einops

Posted IE06

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python系列23:张量操作库einops相关的知识,希望对你有一定的参考价值。

1. 简介

非常方便的张量转换库,支持numpy, pytorch, tensorflow, jax等
主要有三个函数:rearrange, reduce, repeat。
首先是基本模块,所有的功能都长这样:

y = rearrange(x, 'b c h w -> b (c h w)')

括号在->前面,表示这个维度的数据进行均等拆分;在->后面时,表示这个维度的数据进行堆叠合并。

2. 功能

2.1 rearrange

最基本的功能莫过于“更换轴”,例如下图就是更换长与宽

y = rearrange(x, 'h w c -> w h c')



变为

接下来是拼接与裁剪。括号在前面是裁剪,放在后面是拼接。




注意括号里面的顺序。前面的表示整体堆叠,后面的表示每个堆叠块里面的连续像素个数。看下面这个例子:

还有这个例子,显示分成3块,每块分别填充e,i,n;接下来每块再填充o,p,s,因此总的来说是eoipns

2.2 reduce

顾名思义,消除某一个维度:


2.3 repeat

括号的规则和rearrange一致:

以上是关于python系列23:张量操作库einops的主要内容,如果未能解决你的问题,请参考以下文章

[TensorFlow系列-16]:TensorFlow基础 - 张量的操作 - 变形

[TensorFlow系列-15]:TensorFlow基础 - 张量的操作 - 拆分与分割

[TensorFlow系列-14]:TensorFlow基础 - 张量的操作 - 拼接与堆叠

TH库学习: THTensorApply宏观理解(简化)

TH库学习: THTensorApply宏观理解(简化)

[PyTroch系列-16]:PyTorch基础 - 张量的操作 - 变形