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')


python系列23:张量操作库einops_第1张图片
变为
python系列23:张量操作库einops_第2张图片
接下来是拼接与裁剪。括号在前面是裁剪,放在后面是拼接。
python系列23:张量操作库einops_第3张图片
python系列23:张量操作库einops_第4张图片
python系列23:张量操作库einops_第5张图片
python系列23:张量操作库einops_第6张图片
注意括号里面的顺序。前面的表示整体堆叠,后面的表示每个堆叠块里面的连续像素个数。看下面这个例子:
python系列23:张量操作库einops_第7张图片
还有这个例子,显示分成3块,每块分别填充e,i,n;接下来每块再填充o,p,s,因此总的来说是eoipns
python系列23:张量操作库einops_第8张图片

2.2 reduce

顾名思义,消除某一个维度:
python系列23:张量操作库einops_第9张图片
python系列23:张量操作库einops_第10张图片
python系列23:张量操作库einops_第11张图片

2.3 repeat

括号的规则和rearrange一致:
python系列23:张量操作库einops_第12张图片
python系列23:张量操作库einops_第13张图片

你可能感兴趣的:(python系列,python,pytorch,深度学习)