Shorthand way to convert an ndarray of 2D torch tensors to completely torch tensor

I have some data of the following form,

shape = (batch_size X max_seq_len X embedding_dim)

np.ndarray([torch.tensor([torch.tensor(), torch.tensor(), ....]), ...])

Is there a convenient way to convert it to,

torch.tensor([torch.tensor([torch.tensor(), torch.tensor(), ....]), ...])

Right now, I do

torch.from_numpy(devX)

and get the error

TypeError: can't convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, int64, int32, int16, int8, uint8, and bool.

Tensors fundamentally cannot hold arbitrary objects, but assuming you have a 1d array of 2d tensors, you can use stack to get a 3d Tensor.

Best regards

Thomas

Thanks for the reply! Could you elaborate a little more? I’m sort of new to the framework. Thanks.

Well, so ideally you would have shown more about how your data looks like (I must admit I don’t understand that exactly), but say it is similar to

a,b,c = torch.randn(3, 2, 10) # three 2x10 tensors
arr = numpy.array([a,b,c], dtype=object) # array of size 3 of 2x10 tensors

then you can do

t = torch.stack(list(arr), dim=0) # 3x2x10 tensor

Best regards

Thomas