如何获取由Ragged Tensor构建的数据集的元素最大长度?
获取Ragged Tensor构建的数据集的最大元素长度
针对你给出的由Ragged Tensor构建的tf.data.Dataset,可以通过以下几种方式获取所有元素的最大长度(示例中结果为4):
方法一:利用数据集的reduce操作
直接通过数据集的reduce方法遍历每个元素,动态更新当前最大长度:
import tensorflow as tf ds = tf.data.Dataset.from_tensor_slices( tf.ragged.constant([[1, 2, 3, 4], [], [5, 6, 7], [8], []])) max_length = ds.reduce(0, lambda current_max, elem: tf.maximum(current_max, tf.shape(elem)[0])) print(max_length.numpy()) # 输出:4
方法二:收集所有元素长度后求最大值
先遍历数据集获取每个元素的长度,再用tf.reduce_max计算最大值:
lengths = [tf.shape(elem)[0] for elem in ds] max_length = tf.reduce_max(lengths).numpy() print(max_length) # 输出:4
方法三:基于原始Ragged Tensor直接计算
如果你能访问构建数据集的原始Ragged Tensor,可以更高效地通过row_lengths()获取所有元素长度,再求最大值:
original_ragged = tf.ragged.constant([[1, 2, 3, 4], [], [5, 6, 7], [8], []]) max_length = tf.reduce_max(original_ragged.row_lengths()).numpy() print(max_length) # 输出:4
内容的提问来源于stack exchange,提问作者Mykola Zotko
相关产品推荐
相关产品推荐

