для чего используется параметр ragged_rank в API tf.ragged.constant ()?

#tensorflow #ragged-tensors

Вопрос:

Я понятия не имею, какова роль ragged_rank передаваемого параметра tf.ragged.constant() .

Играя с ним, я попробовал следующий код:

 list(tf.data.Dataset.from_tensor_slices
(tf.ragged.constant([[[1,2,3], [4,5,6]],[[7,8,9]]], ragged_rank=1)))
 

где ragged_rank=1 передается, и это производит

 [<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
 array([[1, 2, 3],
        [4, 5, 6]])>,
 <tf.Tensor: shape=(1, 3), dtype=int32, numpy=array([[7, 8, 9]])>]
 

С другой стороны, если я ragged_rank=2 вместо этого пройду,

 list(tf.data.Dataset.from_tensor_slices
(tf.ragged.constant([[[1,2,3], [4,5,6]],[[7,8,9]]], ragged_rank=2)))
 

результат выглядит несколько похожим на меня, но не идентичным описанному выше:

 [<tf.RaggedTensor [[1, 2, 3], [4, 5, 6]]>, <tf.RaggedTensor [[7, 8, 9]]>]
 

Более того, я обнаружил, что следующий код выдает ошибку

 list(tf.data.Dataset.from_tensor_slices
(tf.ragged.constant([[[1,2,3], [4,5,6]],[[7,8]]], ragged_rank=1)))

ValueError: inner values have inconsistent shape
 

если я не пройду ragged_rank=2 , что приведет:

 [<tf.RaggedTensor [[1, 2, 3], [4, 5, 6]]>, <tf.RaggedTensor [[7, 8]]>]