将可变大小的 numpy 数组转换为 Tensorflow 张量

Convert a variable sized numpy array to Tensorflow Tensors

我正在尝试 Tensorflow 2.0 alpha 预览版并正在测试 Eager 执行。 我的疑问是,如果你在中间有一个可变大小的 numpy 数组,比如

input.shape
(10,)

input[0].shape
(109, 16)

input[1].shape
(266, 16)

数组的其余部分依此类推,如何急切地将它们转换为张量。

当我尝试

tf.convert_to_tensor(input)

tf.Variable(input)

我明白了

ValueError: Failed to convert numpy ndarray to a Tensor (Unable to get element as bytes.).

转换每个子数组有效,但由于子数组大小不同,tf.stack 无效。

有什么帮助或建议吗?

似乎解决这个问题的唯一方法是使用列表的列表,然后将它们转换为参差不齐的张量,因为 numpy 不能很好地支持参差不齐的数组。如果我发现任何新内容,将会更新

这也发生在我身上。看着 docs here ,我最终尝试了

tf.convert_to_tensor(input, dtype=tf.float32)

这对我有用。

如果您可以创建数组列表,那么 tf.ragged.stack 应该可以。您可以像这样使用它,例如:

tf.ragged.stack([tf.convert_to_tensor(arr) for arr in arrays], axis=0)

这会将大小不均的数组堆叠成 RaggedTensor