當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。