我有一个4D形状的RaggedTensor(batch_size,None,None(,我想从中创建一个形状的张量(batch_size,None100(。因此,基本上合并了第一维度和第二维度,但不包括任何填充([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,None,100(到(batch_size,None100(合并两个中间维度。
编辑:
更简单的方式my_ragged_tensor.merge_dims(1,2)