繁体   English   中英

提供给`tf.data.Dataset.from_generator(...)`的map函数可以解析张量对象吗?

[英]Can the map function supplied to `tf.data.Dataset.from_generator(…)` resolve a tensor object?

我想创建一个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(...)函数中,如果我直接从数据指针/文件名列表开始使用生成器,这将是必需的。

我想使用生成器,因为每个数据指针/文件名将生成大量数据值。

答案的确是不。 这是对几个相关的git问题(在撰写本文时尚未解决)的参考,以进一步解决该问题:

https://github.com/tensorflow/tensorflow/issues/13101

https://github.com/tensorflow/tensorflow/issues/16343

TensorFlow现在支持将张量参数传递给生成器:

def map_func(tensor):
    dataset = tf.data.Dataset.from_generator(generator, tf.float32, args=(tensor,))
    return dataset

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM