Reputation: 1824
I am trying Tensorflow 2.0 alpha preview and was testing the Eager execution . My doubt is that if you have a numpy array of variable size in middle like
input.shape
(10,)
input[0].shape
(109, 16)
input[1].shape
(266, 16)
and so on for the rest of the array , how does one eagerly convert them to tensors.
when I try
tf.convert_to_tensor(input)
or
tf.Variable(input)
I get
ValueError: Failed to convert numpy ndarray to a Tensor (Unable to get element as bytes.).
Converting each sub-array works , but because the sub-array size isn't same , tf.stack doesn't work.
Any help or suggestions ?
Upvotes: 5
Views: 7393
Reputation: 341
If you can make lists of arrays, then tf.ragged.stack
should do it. You can use it like this for example:
tf.ragged.stack([tf.convert_to_tensor(arr) for arr in arrays], axis=0)
This will stack uneven sized arrays into a RaggedTensor
.
Upvotes: 1
Reputation: 23563
This was happening to me in eager as well. Looking at the docs here , I ended up trying
tf.convert_to_tensor(input, dtype=tf.float32)
And that worked for me.
Upvotes: 3
Reputation: 1824
It seems that the only way to work with this is to use lists of lists and then convert them to ragged tensors, since numpy doesnt support ragged arrays very well. Will Update if I find anything new
Upvotes: 0