当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.keras.layers.experimental.preprocessing.PreprocessingLayer.adapt用法及代码示例


用法

adapt(
    data, batch_size=None, steps=None
)

参数

  • data 要训​​练的数据。它可以作为 tf.data 数据集或作为 numpy 数组传递。
  • batch_size 整数或 None 。每个状态更新的样本数。如果未指定,batch_size 将默认为 32。如果您的数据是数据集、生成器或 keras.utils.Sequence 实例的形式(因为它们生成批次),请不要指定 batch_size
  • steps 整数或 None 。步骤总数(样本批次)使用输入张量(例如 TensorFlow 数据张量)进行训练时,默认 None 等于数据集中的样本数量除以批次大小,如果无法确定,则为 1。如果 x 是 tf.data 数据集,并且 'steps' 为 None,则 epoch 将运行直到输入数据集用完。传递无限重复数据集时,您必须指定 steps 参数。数组输入不支持此参数。

使预处理层的状态适合正在传递的数据。

在层上调用adapt 后,预处理层的状态在训练期间不会更新。为了使预处理层在任何分布上下文中高效,它们对于调用该层的任何已编译 tf.Graph 保持不变。这不会影响每个层仅调整一次时的层使用,但如果您多次调整层,则需要注意重新编译任何已编译的函数,如下所示:

  • 如果要将预处理层添加到 keras.Model ,则需要在每次后续调用 adapt 之后调用 model.compile
  • 如果您在 tf.data.Dataset.map 中调用预处理层,则应在每个 adapt 之后在输入 tf.data.Dataset 上再次调用 map
  • 如果您使用 tf.function 直接调用预处理层,则需要在每次后续调用 adapt 后再次在可调用对象上调用 tf.function

tf.keras.Model 具有多个适应的示例:

layer = tf.keras.layers.Normalization(
    axis=None)
layer.adapt([0, 2])
model = tf.keras.Sequential(layer)
model.predict([0, 1, 2])
array([-1.,  0.,  1.], dtype=float32)
layer.adapt([-1, 1])
model.compile() # This is needed to re-compile model.predict!
model.predict([0, 1, 2])
array([0., 1., 2.], dtype=float32)

tf.data.Dataset 具有多个适应的示例:

layer = tf.keras.layers.Normalization(
    axis=None)
layer.adapt([0, 2])
input_ds = tf.data.Dataset.range(3)
normalized_ds = input_ds.map(layer)
list(normalized_ds.as_numpy_iterator())
[array([-1.], dtype=float32),
 array([0.], dtype=float32),
 array([1.], dtype=float32)]
layer.adapt([-1, 1])
normalized_ds = input_ds.map(layer) # Re-map over the input dataset.
list(normalized_ds.as_numpy_iterator())
[array([0.], dtype=float32),
 array([1.], dtype=float32),
 array([2.], dtype=float32)]

adapt() 仅用作计算层状态的单个机器实用程序。要分析无法容纳在单台机器上的数据集,请参阅用于多机的 Tensorflow 变换 map-reduce 解决方案。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.layers.experimental.preprocessing.PreprocessingLayer.adapt。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。