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


Python tf.tpu.experimental.embedding.FTRL用法及代码示例


带有 TPU 嵌入的 FTRL 的优化参数。

用法

tf.tpu.experimental.embedding.FTRL(
    learning_rate:Union[float, Callable[[], float]] = 0.001,
    learning_rate_power:float = -0.5,
    l1_regularization_strength:float = 0.0,
    l2_regularization_strength:float = 0.0,
    beta:float = 0.0,
    initial_accumulator_value:float = 0.1,
    use_gradient_accumulation:bool = True,
    clip_weight_min:Optional[float] = None,
    clip_weight_max:Optional[float] = None,
    weight_decay_factor:Optional[float] = None,
    multiply_weight_decay_factor_by_learning_rate:bool = None,
    slot_variable_creation_fn:Optional[SlotVarCreationFnType] = None,
    clipvalue:Optional[ClipValueType] = None,
    multiply_linear_by_learning_rate:bool = False,
    allow_zero_accumulator:bool = False
)

参数

  • learning_rate 学习率。它应该是一个浮点值或一个不带参数的可调用动态学习率。
  • learning_rate_power 浮点值,必须小于或等于零。控制在训练期间学习率如何降低。使用零表示固定的学习率。
  • l1_regularization_strength 浮点值,必须大于或等于零。
  • l2_regularization_strength 浮点值,必须大于或等于零。
  • beta 一个浮点值,代表论文中的 beta 值。
  • initial_accumulator_value 累加器的起始值。只允许零值或正值。
  • use_gradient_accumulation 将此设置为 False 会使嵌入梯度计算的准确性降低但速度更快。
  • clip_weight_min 要裁剪的最小值;无意味着-无穷大。
  • clip_weight_max 要裁剪的最大值;无意味着+无穷大。
  • weight_decay_factor 要应用的重量衰减量; None 表示权重没有衰减。
  • multiply_weight_decay_factor_by_learning_rate 如果为真,weight_decay_factor 将乘以当前学习率。
  • slot_variable_creation_fn 如果您希望直接控制槽变量的创建,请将其设置为一个可调用的,带有三个参数:一个表变量、一个为其创建的槽名称列表和一个初始化器列表。此函数应返回一个 dict,其中插槽名称作为键,创建的变量作为值,其类型与表变量匹配。当设置为无(默认值)时,使用内置变量创建。
  • clipvalue 控制渐变的剪裁。设置为单个正标量值以获取剪裁或标量值元组 (min, max) 以设置单独的最大值或最小值。如果两个条目之一为无,则不会裁剪该方向。
  • multiply_linear_by_learning_rate 如果设置为 True,则对 FTRL 使用修改后的公式,将 "linear" 累加器视为预乘以学习率(即,名为 "linear" 的累加器实际上存储“linear * learning_rate”)。除了检查点兼容性之外,这在数学上等同于静态学习率;对于动态学习率,只要学习率不快速变化,它几乎相同。这样做的好处是修改后的公式可以处理零和接近零的学习率,而不会产生 NaN,从而提高了学习率 ramp-up 的灵活性。
  • allow_zero_accumulator 如果设置为 True,则更改一些内部公式以允许零和接近零的累加器值,但会牺牲一些性能;仅当您使用的初始累加器值为零时才需要设置,这并不常见。

请参阅本文的算法 1。

通过 optimizer 参数将此传递给 tf.tpu.experimental.embedding.TPUEmbedding 以设置全局优化器及其参数:

embedding = tf.tpu.experimental.embedding.TPUEmbedding(
    ...
    optimizer=tf.tpu.experimental.embedding.FTRL(0.1))

这也可以在tf.tpu.experimental.embedding.TableConfig 中用作优化器参数来设置特定于表的优化器。这将覆盖上面定义的全局嵌入优化器的优化器和参数:

table_one = tf.tpu.experimental.embedding.TableConfig(
    vocabulary_size=...,
    dim=...,
    optimizer=tf.tpu.experimental.embedding.FTRL(0.2))
table_two = tf.tpu.experimental.embedding.TableConfig(
    vocabulary_size=...,
    dim=...)

feature_config = (
    tf.tpu.experimental.embedding.FeatureConfig(
        table=table_one),
    tf.tpu.experimental.embedding.FeatureConfig(
        table=table_two))

embedding = tf.tpu.experimental.embedding.TPUEmbedding(
    feature_config=feature_config,
    batch_size=...
    optimizer=tf.tpu.experimental.embedding.FTRL(0.1))

在上面的示例中,将在学习率为 0.2 的表中查找第一个特征,而将在学习率为 0.1 的表中查找第二个特征。

有关这些参数及其对优化器算法的影响的完整说明,请参阅“tensorflow/core/protobuf/tpu/optimization_parameters.proto”。

相关用法


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