Search code examples
pythonnumpypytorch

TypeError: can't convert np.ndarray of type numpy.object_


How to convert a numpy array of dtype=object to torch Tensor?

array([
   array([0.5, 1.0, 2.0], dtype=float16),
   array([4.0, 6.0, 8.0], dtype=float16)
], dtype=object)

Solution

  • It is difficult to answer properly since you do not show us how you try to do it. From your error message I can see that you try to convert a numpy array containing objects to a torch tensor. This does not work, you will need a numeric data type:

    import torch
    import numpy as np
    
    # Your test array without 'dtype=object'
    a = np.array([
        np.array([0.5, 1.0, 2.0], dtype=np.float16),
        np.array([4.0, 6.0, 8.0], dtype=np.float16),
    ])
    
    b = torch.from_numpy(a)
    
    print(a.dtype) # This should not be 'object'
    print(b)
    

    Output

    float16
    tensor([[0.5000, 1.0000, 2.0000],
            [4.0000, 6.0000, 8.0000]], dtype=torch.float16)