Python TensorFlow:是否可以使用for循环将函数映射到数据集?

Python TensorFlow:是否可以使用for循环将函数映射到数据集?,python,tensorflow,tensor,map-function,Python,Tensorflow,Tensor,Map Function,我有一个tf.data.TFRecordDataset和一个(计算上很昂贵的)函数,我想映射到它。我使用TensorFlow 1.12和Eanger execution,该函数使用EangerTensor.NumPy()对数据集中的张量使用NumPy-ndarray解释。但是,给定给tf.Dataset.map()的函数内部的代码没有被急切地执行,这就是为什么.numpy()转换在那里不起作用,并且.map()不再是一个选项。是否可以对数据集进行for循环并修改其中的示例?简单地分配给他们似乎不

我有一个
tf.data.TFRecordDataset
和一个(计算上很昂贵的)函数,我想映射到它。我使用TensorFlow 1.12和Eanger execution,该函数使用
EangerTensor.NumPy()
对数据集中的张量使用NumPy-ndarray解释。但是,给定给
tf.Dataset.map()
的函数内部的代码没有被急切地执行,这就是为什么
.numpy()
转换在那里不起作用,并且
.map()
不再是一个选项。是否可以对数据集进行for循环并修改其中的示例?简单地分配给他们似乎不起作用。

不,不完全是这样

数据集本质上是惰性评估的,不能以这种方式分配-从概念上讲,尝试将其视为管道而不是变量:读取每个值,通过任何
map()
操作、
batch()
ops等传递给模型,并根据需要显示。“分配”一个值就是将其写入.tfrecord文件中的磁盘,并且不太可能被支持(这些文件专门设计为快速读取而不是随机访问)

相反,您可以使用TensorFlow进行预处理,并使用
TfRecordWriter
在昂贵的预处理完成后写入新的tfrecord,然后使用此新数据集作为模型的输入。如果您有可用的磁盘空间,这可能是您最好的选择