将可变大小的 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
。
我正在尝试 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
。