当前位置: 首页 > 面试题库 >

tf.data.Dataset:如何获取数据集大小(历元中的元素数)?

隆飞驰
2023-03-14
问题内容

假设我以这种方式定义了一个数据集:

filename_dataset = tf.data.Dataset.list_files("{}/*.png".format(dataset))

如何获取数据集中的元素数量(因此,构成一个纪元的单个元素的数量)?

我知道tf.data.Dataset已经知道数据集的维度,因为该repeat()方法允许在指定的时期数内重复输入管道。因此,它必须是获取此信息的一种方法。


问题答案:

tf.data.Dataset.list_files创建一个张量称为MatchingFiles:0(如果适用,带有适当的前缀)。

您可以评估

tf.shape(tf.get_default_graph().get_tensor_by_name('MatchingFiles:0'))[0]

获取文件数。

当然,这仅在简单情况下有效,特别是如果每​​个图像只有一个样本(或已知数量的样本)。

在更复杂的情况下,例如,当您不知道每个文件中的样本数时,您只能在时期结束时观察样本数。

为此,您可以观看计数的纪元数Datasetrepeat()创建一个名为的成员_count,该成员对纪元数进行计数。通过在迭代过程中观察它,您可以发现它何时发生变化,并从那里计算出数据集的大小。

该计数器可能埋在Datasets的层次结构中,该层次结构是在连续调用成员函数时创建的,因此我们必须像这样挖掘它。

d = my_dataset
# RepeatDataset seems not to be exposed -- this is a possible workaround 
RepeatDataset = type(tf.data.Dataset().repeat())
try:
  while not isinstance(d, RepeatDataset):
    d = d._input_dataset
except AttributeError:
  warnings.warn('no epoch counter found')
  epoch_counter = None
else:
  epoch_counter = d._count

请注意,使用此技术时,数据集大小的计算并不准确,因为在此期间epoch_counter递增的批次通常会将来自两个连续时期的样本混合在一起。因此,此计算精确到您的批生产长度。



 类似资料:
  • 问题内容: 考虑以下: 如何获取列表中的元素数量? 问题答案: 该函数可以与Python中的几种不同类型一起使用-内置类型和库类型。例如: 官方2.x文档在这里: 官方3.x文档在这里:

  • 本文向大家介绍C#中如何获取HashSet元素的数量,包括了C#中如何获取HashSet元素的数量的使用技巧和注意事项,需要的朋友参考一下 要获取C#中HashSet中的元素数,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-

  • 问题内容: 我有一个包含以下内容: 现在我所知道的只是对象名称(统计信息), 不知道 它是 元素编号 还是它的 元素名称 ,因此,有一种方法可以解析该对象,以便我可以获取它的元素并进行处理(例如,约翰罗斯)? 问题答案: 为了以动态方式获取这些项目:

  • 问题内容: 考虑以下: 如何获取列表中的元素数量? 问题答案: 该函数可与Python中的几种不同类型一起使用-内置类型和库类型。例如: 官方2.x文档在这里: 官方3.x文档在这里:

  • 我正在尝试获取给定数组中的最大元素,以下是要求: > var obj={key:[1,2,4]}; 有人能给我解释一下为什么当我把 在IF函数的末尾,我得到了错误:如果属性不存在,应该返回未定义。但是当我把它放在IF函数的开头时,它毫无问题地通过了。

  • 本文向大家介绍如何获取MongoDB中不同元素的最大值,包括了如何获取MongoDB中不同元素的最大值的使用技巧和注意事项,需要的朋友参考一下 要获取不同元素的最大值,请在MongoDBgregation()中使用$sort和$group。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是查询以获取MongoDB中不同元素的最大值- 这将产

  • 问题内容: 是否可以考虑到其他地方(例如在标记中)进行的常规设置,继承的值等来检测DOM元素的计算结果? 与框架无关的方法会很好,因为我正在开发一个可以独立运行的脚本,但这当然不是必需的。 背景:我正在尝试调整CKEditor的字体选择器插件(在此处提供源),以便它始终显示当前光标位置的字体大小(而不是仅在具有显式设置的,这是当前行为中)。 问题答案: 您可以尝试使用非标准IE 属性,否则,可以查

  • 问题内容: 我想做一个Java游戏。首先,程序要求玩家的数量。之后,它询问他们的名字。我将他们的名字放在ID和分数中。在游戏结束时,我会计算分数,然后将其放在(特定名称的特定分数)中。有谁知道如何做到这一点?这是我的代码: 玩家: 主要: 有谁知道我最后如何打印,例如: 更新: 我主要是这样做的(正如Jigar Joshi建议的那样) 当我将球员的两个名字“ a”和“ b”放进去时,它会显示“分数