张量流:将张量列表转换为在某个轴上具有固定暗淡的参差不齐的张量
tensorflow: convert a list of tensor to ragged tensor with a fixed dim in a certain axis
假设我有三个形状为 (1,3)
的 numpy 数组,并将它们堆叠成形状为 (2,3)
和 (1,3)
的组。然后我将它们与 tf.ragged.stack
堆叠起来以获得参差不齐的张量:
x1 = np.asarray([1,0,0])
x2 = np.asarray([0,1,0])
x3 = np.asarray([0,0,1])
group_a = np.stack([x1,x2])
group_b = np.stack([x3])
ac = tf.ragged.stack([group_a,group_b], axis=0)
我希望它的形状是 (2, None, 3)
,但它是 (2, None, None)
。如何获得所需的形状?我正在使用 tensorflow 2.5.2
发生这种情况是因为 tf.ragged.stack
正在创建一个等于 2 的 ragged_rank。查看 docs 了解更多信息。您可以像这样明确定义如何划分参差不齐的张量:
import tensorflow as tf
import numpy as np
x1 = np.asarray([1,0,0])
x2 = np.asarray([0,1,0])
x3 = np.asarray([0,0,1])
ac = tf.RaggedTensor.from_row_splits(
values=[x1, x2, x3],
row_splits=[0, 2, 3])
print(ac.shape)
print(ac)
(2, None, 3)
<tf.RaggedTensor [[[1, 0, 0], [0, 1, 0]], [[0, 0, 1]]]>
这个问题其实官方帮助已经回答了:
https://www.tensorflow.org/api_docs/python/tf/RaggedTensor#get_shape
x1=[[0, 1, 2]]
x2=[[1, 2, 3], [3, 4, 6]]
tf.ragged.constant([x1, x2], ragged_rank=1).shape
Out[51]: TensorShape([2, None, 3])
假设我有三个形状为 (1,3)
的 numpy 数组,并将它们堆叠成形状为 (2,3)
和 (1,3)
的组。然后我将它们与 tf.ragged.stack
堆叠起来以获得参差不齐的张量:
x1 = np.asarray([1,0,0])
x2 = np.asarray([0,1,0])
x3 = np.asarray([0,0,1])
group_a = np.stack([x1,x2])
group_b = np.stack([x3])
ac = tf.ragged.stack([group_a,group_b], axis=0)
我希望它的形状是 (2, None, 3)
,但它是 (2, None, None)
。如何获得所需的形状?我正在使用 tensorflow 2.5.2
发生这种情况是因为 tf.ragged.stack
正在创建一个等于 2 的 ragged_rank。查看 docs 了解更多信息。您可以像这样明确定义如何划分参差不齐的张量:
import tensorflow as tf
import numpy as np
x1 = np.asarray([1,0,0])
x2 = np.asarray([0,1,0])
x3 = np.asarray([0,0,1])
ac = tf.RaggedTensor.from_row_splits(
values=[x1, x2, x3],
row_splits=[0, 2, 3])
print(ac.shape)
print(ac)
(2, None, 3)
<tf.RaggedTensor [[[1, 0, 0], [0, 1, 0]], [[0, 0, 1]]]>
这个问题其实官方帮助已经回答了: https://www.tensorflow.org/api_docs/python/tf/RaggedTensor#get_shape
x1=[[0, 1, 2]]
x2=[[1, 2, 3], [3, 4, 6]]
tf.ragged.constant([x1, x2], ragged_rank=1).shape
Out[51]: TensorShape([2, None, 3])