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)
ndarray of type numpy. uint16. The only supported types are: float64, float32, float16, int64, int32, int16, int8, uint8, and bool.
We have a method called astype(data_type) to change the data type of a numpy array. If we have a numpy array of type float64, then we can change it to int32 by giving the data type to the astype() method of numpy array.
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)
Just adding to what was written above-
First you should make sure your array dtype ins't a 'O' (Object).
You do that by: (credit)
a=np.vstack(a).astype(np.float)
Then you can use:
b = torch.from_numpy(a)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With