Tensorflow 如何在tf.dataset中获取每个历元的步骤数?
我很好奇如何在tf.keras中设置适合在tf.dataset?上进行训练的步长?。因为我需要大量的例子来计算它,我想知道我是怎么得到这个的 由于它是tf.data类型,您可以假设这更容易。如果我将“每历元步长”设置为“无”,则得到“未知”Tensorflow 如何在tf.dataset中获取每个历元的步骤数?,tensorflow,keras,Tensorflow,Keras,我很好奇如何在tf.keras中设置适合在tf.dataset?上进行训练的步长?。因为我需要大量的例子来计算它,我想知道我是怎么得到这个的 由于它是tf.data类型,您可以假设这更容易。如果我将“每历元步长”设置为“无”,则得到“未知” 为什么使用tf.data会让生活变得如此复杂?试试tf.data.experiative.cardinality: dataset = tf.data.Dataset.range(42) print(tf.data.experimental.cardinal
为什么使用tf.data会让生活变得如此复杂?试试
tf.data.experiative.cardinality
:
dataset = tf.data.Dataset.range(42)
print(tf.data.experimental.cardinality(dataset).numpy())
42
尝试
tf.data.experimental.cardinality
:
dataset = tf.data.Dataset.range(42)
print(tf.data.experimental.cardinality(dataset).numpy())
42
前面的答案不错,但我想指出两件事:
过滤器
谓词,基数可能返回值-2,因此未知;如果确实在数据集上使用筛选谓词,请确保在对数据集应用.from\u tensor\u slices()
之前,已以其他方式计算了数据集的长度(例如,熊猫数据帧的长度)steps\u per\u epoch
和validation\u steps
:steps\u per\u epoch==length\u of_training\u dataset//batch\u size,validation\u steps==length\u of_of_validation\u dataset//batch\u size
这里有一个完整的例子:前面的答案很好,但我想指出两个问题:
过滤器
谓词,基数可能会返回值-2,因此未知;如果在数据集上使用过滤器谓词,请确保已以其他方式计算数据集的长度(例如,在应用之前,从_tensor_slices()
计算数据帧的长度)steps\u per\u epoch
和validation\u steps
:steps\u per\u epoch==length\u of_training\u dataset//batch\u size,validation\u steps==length\u of_of_validation\u dataset//batch\u size
这里有一个完整的例子:谢谢!但我真的很困惑。我在数据集之后使用repeat(2)(实际上我不知道这是什么作用)。我现在如何设置每个历元的步长以获取每个历元中的所有数据?我现在是否设置步长计数为previus值的两倍,因为repeat(2)?!Steps\u per\u epoch==length\u of_training\u dataset//batch\u size,validation\u Steps==length\u of_validation\u dataset//batch\u sizeI get-2。我的数据集是FlatMapDataset类型。我告诉过你这可能发生。然后你需要在长度之前进行某种计算。在某种程度上,我理解它返回-2的原因,因为当你展平时,你不知道有多少个元素你得到的数据。确保在避免任何问题之前计算长度。为了我的理解,使用普通tf.dataset而不重复只需在每个历元的最大值上遍历整个数据一次?因此我需要repeat()并将每个历元的步骤设置为所有批次数?谢谢!但我真的很困惑。我使用repeat(2)在数据集之后(实际上我真的不知道这是做什么的)。我现在如何设置每个历元的步长以获取每个历元中的所有数据?我现在是否设置步长计数为previus值的两倍,因为重复(2)?!Steps\u per\u epoch==length\u of_training\u dataset//batch\u size,validation\u Steps==length\u of_validation\u dataset//batch\u sizeI get-2。我的数据集是FlatMapDataset类型。我告诉过你这可能发生。然后你需要在长度之前进行某种计算。在某种程度上,我理解它返回-2的原因,因为当你展平时,你不知道有多少个元素得到的数据。请确保在计算长度之前避免出现任何问题。据我所知,不重复使用plain tf.dataset只需在每个历元的最大值上遍历整个数据一次?因此我需要repeat()并将每个历元的步骤设置为所有批次数?