This operation includes functionality of transpose (axes permutation), reshape (view), squeeze, unsqueeze, stack, concatenate and other operations. If possible, a view to the original tensor is returned.ĭef rearrange ( tensor, pattern : str, ** axes_lengths ): """ einops.rearrange is a reader-friendly smart element reordering for multidimensional tensors. List of tensors is also accepted, those should be of the same type and shapeĪny additional specifications for dimensions numpy.ndarray, tensorflow, pytorch, mxnet.ndarray). When composing axes, C-order enumeration used (consecutive elements have different last axis) shape ( 32, 3600 ) # split each image into 4 smaller (top-left, top-right, bottom-left, bottom-right), 128 = 32 * 2 * 2 > rearrange ( images, 'b (h1 h) (w1 w) c -> (b h1 w1) h w c', h1 = 2, w1 = 2 ). shape ( 32, 3, 30, 40 ) # flattened each image into a vector, 3600 = 30 * 40 * 3 > rearrange ( images, 'b h w c -> b (c h w)' ). shape ( 30, 1280, 3 ) # reordered axes to "b c h w" format for deep learning > rearrange ( images, 'b h w c -> b c h w' ). shape ( 960, 40, 3 ) # concatenated images along horizontal axis, 1280 = 32 * 40 > rearrange ( images, 'b h w c -> h (b w) c' ). shape ( 32, 30, 40, 3 ) # concatenate images along height (vertical axis), 960 = 32 * 30 > rearrange ( images, 'b h w c -> (b h) w c' ). # suppose we have a set of 32 images in "h w c" format (height-width-channel) > images = # stack along first (batch) axis, output is a single array > rearrange ( images, 'b h w c -> b h w c' ).
0 Comments
Leave a Reply. |