python - 使用 tf.data.Dataset.from_generator() 时参数化生成器

标签 python tensorflow

我想为我的生成器提供参数以与tf.data.Dataset.from_generator()结合使用。例如:

def generator(lo, hi):
    for i in range(lo, hi):
        yield float(i)

该生成器生成 lohi 之间的 float 。但请注意,在创建数据集时,这些参数永远不会传递给此生成器。

tf.data.Dataset.from_generator(generator, tf.float64)

这是因为 tf.data.Dataset.from_generator() 的生成器参数不应采用任何参数。

有什么解决办法吗?

最佳答案

我找到了一个基于称为部分应用函数的函数式编程概念的解决方案。总结一下:

a PAF is a function that takes a function with multiple parameters and returns a function with fewer parameters.

我的做法如下:

from functools import partial
import tensorflow as tf

def generator(lo, hi):
    for i in range(lo, hi):
        yield float(i)

def get_generator(lo, hi):
    return partial(generator, lo, hi)

tf.data.Dataset(get_generator(lo, hi), tf.float64)

get_generator(lo, hi) 函数返回生成器的部分应用函数,该函数修复 lohi 参数的值,这实际上是 tf.data.Dataset.from_generator() 所需的无参数生成器。

关于python - 使用 tf.data.Dataset.from_generator() 时参数化生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51655339/

相关文章:

python - 没有合适的传播模型可用

python - Groupby、移位和前向填充

python - 如何根据一周中不同日期的不同时间段修剪数据集?

python - tf.print() vs Python print vs tensor.eval()

python - 引导容器流体类在 Django 中不起作用

python - 更改特定文本的字体大小 - Python/Pygame

python - Protobuf 编译问题

python - 在不重置权重的情况下将正则化器添加到已训练模型的现有层中?

python - 使用 Tensorflow 初始化神经网络权重

amazon-web-services - 如何在 AWS Lambda 中使用 tensorflow 2.0?