问题描述
我有一个形状为 (batch_size,None,100) 的 4D RaggedTensor,我想从中创建一个形状为 (batch_size,100) 的张量。所以基本上合并了第一维和第二维,但不包括任何填充([1,2,3],[4] => [1,3,4])并且不首先转换为密集张量。 有没有办法做到这一点?如果不是,有什么办法可以解决?
解决方法
经过更多的阅读和尝试,我找到了答案,这需要对两个维度中的每一个使用 row_starts 两次。 结果如下:
row_starts = [my_ragged_tensor.values.row_starts()[row_start]
for row_start in my_ragged_tensor.row_starts()]
my_ragged_tensor_flat = tf.RaggedTensor.from_row_starts(my_ragged_tensor.flat_values,row_starts)
这会将“my_ragged_tensor”的形状从 (batch_size,None,100) 更改为 (batch_size,100),合并两个中间维度。
编辑:
更简单的方法my_ragged_tensor.merge_dims(1,2)