tf.tpu.experimental.embedding.FTRL
Параметры оптимизации для FTRL с TPU-встраиванием.
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: Optional[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,
low_dimensional_packing_status: bool = False
)
См. Алгоритм 1 этой статьи.
Передайте этот объект в tf.tpu.experimental.embedding.TPUEmbedding через аргумент optimizer, чтобы установить глобальный оптимизатор и его параметры:
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'.
| Аргументы | |
|---|---|
learning_rate | Скорость обучения. Должно быть число с плавающей точкой или вызываемый без аргументов для динамической скорости обучения. |
learning_rate_power | Значение с плавающей точкой, должно быть меньше или равно нулю. Управляет тем, как скорость обучения уменьшается во время обучения. Используйте ноль для фиксированной скорости обучения. |
l1_regularization_strength | Вещественное значение, должно быть больше или равно нулю. |
l2_regularization_strength | Вещественное значение, должно быть больше или равно нулю. |
beta | Вещественное значение, представляющее значение бета из статьи. |
initial_accumulator_value | Начальное значение для накопителей. Разрешены только нулевые или положительные значения. |
use_gradient_accumulation | Установка этого значения в False делает вычисление градиентов встраивания менее точным, но быстрее. |
clip_weight_min | Минимальное значение для обрезки; None означает -бесконечность. |
clip_weight_max | Максимальное значение для обрезки; None означает +бесконечность. |
weight_decay_factor | Величина уменьшения веса, которую нужно применить; None означает, что веса не уменьшаются. |
multiply_weight_decay_factor_by_learning_rate | Если True, то weight_decay_factor умножается на текущую скорость обучения. |
slot_variable_creation_fn | Если вы хотите напрямую управлять созданием переменных слотов, установите это значение в вызываемый объект, принимающий три параметра: переменную таблицы, список имён слотов, которые нужно создать для неё, и список инициализаторов. Эта функция должна вернуть словарь со именами слотов в качестве ключей и созданными переменными в качестве значений с типами, соответствующими переменной таблицы. При установке в None (по умолчанию) используется встроенное создание переменных. |
clipvalue | Управляет обрезкой градиента. Установите либо единственное положительное скалярное значение для обрезки, либо кортеж скалярных значений (min, max) для установки отдельного максимального или минимального значения. Если одно из двух значений равно None, то обрезка в этом направлении не будет выполняться. |
multiply_linear_by_learning_rate | Если установлено в True, используется модифицированная формула для FTRL, которая обрабатывает «линейный» накопитель как предварительно умноженный на скорость обучения (т. е. накопитель с именем «линейный» фактически хранит «линейный * скорость_обучения»). Помимо совместимости с контрольными точками, это математически эквивалентно для статической скорости обучения; для динамической скорости обучения это почти то же самое, если скорость обучения не меняется быстро. Преимущество этого в том, что модифицированная формула обрабатывает нулевые и близкие к нулю скорости обучения без образования NaN, улучшая гибкость при наращивании скорости обучения. |
allow_zero_accumulator | Если установлено в True, изменяются некоторые внутренние формулы, чтобы разрешить нулевые и близкие к нулю значения накопителей за счёт некоторого снижения производительности; это нужно устанавливать только в том случае, если вы используете начальное значение накопителя равное нулю, что бывает редко. |
low_dimensional_packing_status | Статус оптимизации упаковки встраивания низкой размерности управляет тем, следует ли оптимизировать упаковку таблиц встраивания размерности 1, 2 и 4 в памяти. |
Методы
__eq__
__eq__(
other: Any
) -> Union[Any, bool]
Возвращает self==value.
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/tpu/experimental/embedding/FTRL
|
|