GPh*_*ilo 18 python tensorflow tensorflow-datasets
随着最近升级到1.4版,Tensorflow包含tf.data在库核心中.在描述一个"主要的新功能" 版本1.4发行说明是tf.data.Dataset.apply(),这是一个"应用自定义转换功能的方法".这与现有的有tf.data.Dataset.map()什么不同?
Sun*_*eef 23
不同之处在于,map它将分别对每个元素执行一个函数Dataset,而apply将同时执行一个函数Dataset(group_by_window例如在文档中给出的示例).
的参数apply是一个函数,它一个Dataset并返回Dataset时的参数map是一个函数,它有一个元素,并返回一个经变换的元件.
mrr*_*rry 15
Sunreef的回答绝对正确.你可能仍然想知道我们为什么介绍Dataset.apply(),我想我会提供一些背景知识.
所述tf.dataAPI具有一组核心变换状Dataset.map()和Dataset.filter()通常-即是有用的在大范围的数据集的,不太可能改变,并且随着上方法来实现tf.data.Dataset目的.特别是,它们与TensorFlow中的其他核心API 具有相同的向后兼容性保证.
但是,核心方法有点限制.我们还希望在将新转换添加到核心之前自由地尝试新的转换,并允许其他库开发人员创建自己的可重用转换.因此,在TensorFlow 1.4中,我们拆分了一组存在的自定义转换tf.contrib.data.自定义转换包括一些具有非常特定功能的(例如tf.contrib.data.sloppy_interleave()),以及一些API仍处于不稳定状态(如tf.contrib.data.group_by_window()).本来我们实现这些自定义转换为函数Dataset来Dataset,这对管道的句法流的不幸影响.例如:
dataset = tf.data.TFRecordDataset(...).map(...)
# Method chaining breaks when we apply a custom transformation.
dataset = custom_transformation(dataset, x, y, z)
dataset = dataset.shuffle(...).repeat(...).batch(...)
Run Code Online (Sandbox Code Playgroud)
由于这似乎是一种常见的模式,我们添加Dataset.apply()了一种在单个管道中链接核心和自定义转换的方法:
dataset = (tf.data.TFRecordDataset(...)
.map(...)
.apply(custom_transformation(x, y, z))
.shuffle(...)
.repeat(...)
.batch(...))
Run Code Online (Sandbox Code Playgroud)
这是宏观方案中的一个小功能,但希望它有助于使tf.data程序更易于阅读,并且库更容易扩展.
| 归档时间: |
|
| 查看次数: |
6021 次 |
| 最近记录: |