【发布时间】:2026-02-10 01:30:01
【问题描述】:
我想创建一个tf.data.Dataset.from_generator(...) 数据集。我需要传入一个 Python generator。
我想将前一个数据集的属性传递给生成器,如下所示:
dataset = dataset.interleave(
map_func=lambda x: tf.data.Dataset.from_generator(generator=lambda: gen(x), output_types=tf.int64),
cycle_length=2
)
我在哪里定义 gen(...) 以获取一个值(这是指向某些数据的指针,例如 gen 知道如何访问的文件名)。
这失败了,因为gen 接收到张量对象,而不是 python/numpy 值。
有没有办法将张量对象解析为
gen(...)内的值?
交错生成器的原因是我可以使用其他数据集操作(例如 .shuffle() 和 .repeat())来操作数据指针/文件名列表,而无需将它们烘焙到 gen(...) 函数中,这将如果我直接从数据指针/文件名列表开始使用生成器,则有必要。
我想使用生成器,因为每个数据指针/文件名都会生成大量数据值。
【问题讨论】:
-
看来这里的答案是否定的,有 tf.py_func 为地图函数提供此功能,但 tf.py_func 不适用于生成器。如果有更多信息曝光,我会再开放一段时间。这似乎是对数据集管道流程的严格限制。
标签: python tensorflow dataset