# How should we concatenate multiple tensors vertically into one tensor in torch?

I am wondering how should we concatenate tensor with different shapes in the torch. I tried `torch.cat` for that, but I got type erorr as follow:

``````print(tensor_1.shape)
print(tensor_2.shape)

new_tensor = torch.cat((tensor_1, tensor_2),1)
``````

but I got the following error:

``````shape of tensor_1 (?, 30, 30, 128)
shape of tensor_2 (?, 26, 26, 128)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-20-492132d221f7> in <module>()
6 print("shape of tensor_1", tensor_1.shape)
7 print("shape of tensor_2", tensor_2.shape)
----> 8 torch.cat((tensor_1, tensor_2),1)

TypeError: expected Tensor as element 0 in argument 0, but got Tensor
``````

I think in Conv1D, concatenation is simple, in Conv2D, it is not known to me how to make concatenation. Does anyone know how to do this in torch? any idea?

I was thinking getting concatenated tensor shape as `(56,56,128)` is not a good idea or wrong in math. Is there any workaround to do concatenation on those? any thoughts?

desired output

I am not sure how multiple tensor can be concatenated, so I am okay with output as tensor with shape of `(W, H, C)`. How should we do this in torch? any idea?

What dimensions do you want the concatenated tensor to have?

I understand concatenation in 1D, for instance, we can concatenate `(12,20)`, `(6,20)` as `(18, 20)`, but not sure what would be the correct dimension of the concatenated output tensor in 2D. I was thinking output tensor shape could be `(56,56, 128)` based on the above example, but not sure that’s the right intuition to do so. I am open to community suggestions at the best. I think I need a new tensor that could have the shape of `(Width, Height, Channel)`. Do you have any possible thoughts? Thanks!

That works because 12*20 + 6*20 = 18 * 20. But 30*30*128 + 26*26*128 != 56*56*128 so it won’t work.

right, that’s why getting concatenated tensor shape as `(56,56,128)` is not good idea or wrong. What can we do about concatenating multiple tensors? Do we need to reshape it back to `(30,30, 128), (26,26,128) ` into `(W, H)` shape then concatenate then reshape it back to `(W, H, C)`? Do you have any possible thoughts? Thanks!

Suppose you have a 5x5 rectangle and a 10x10 rectangle. You want to concatenate these two rectangles so that the result is a new rectangle. How do you do it?

I am not sure but I think I might do flatten the array and do padding then do concatenation. I really don’t know how should I concatenate 2dim tensor vertically. Do you have any idea or coding attempt that might do some trick on that?