Why differently shaped tensors can't be concatenated with rearrange?
Author: MithrillionCreated Nov 20, 2018Updated Sep 17, 2024
Labelsquestion
Currently, concatenation as in the example is done by calling stack_on_zeroth_dimension() first then rearranging the tensor into the appropriate shape. However, most backend.stack() requires that all except the stacked dimension to be the same, so simple concatenation of a dimension with different lengths is not possible.
For example, if we were to stack an image with 3 channels with an image with a single channel to create a 4-channel image:
img1 = np.random.randn(300, 200, 3)
img2 = np.random.randn(300, 200, 1)
np.concatenate([img1, img2], axis=2).shape
# (300, 200, 4) as expected
rearrange([img1, img2], 'b w h c -> w h (b c)')
# np.stack error: all input arrays must have the same shapeI would be ideal if such cases occurs, concatenation methods like np.concatenate or torch.cat is called instead of stack. I am not sure how this might break the simplicity of the rest of the code.
Source: arogozhnikov/einops