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 | Значение типа float, должно быть меньше или равно нулю. Определяет, как скорость обучения уменьшается во время обучения. Для фиксированной скорости обучения используйте ноль. |
l1_regularization_strength | Значение типа float, должно быть больше или равно нулю. |
l2_regularization_strength | Значение типа float, должно быть больше или равно нулю. |
beta | Значение типа float, соответствующее значению бета из статьи. |
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 используется изменённая формула, в которой предполагается, что аккумулятор "linear" предварительно умножен на скорость обучения (то есть аккумулятор с именем "linear" фактически хранит значение "linear * learning_rate"). За исключением совместимости с контрольными точками, для статической скорости обучения эта формула математически эквивалентна исходной; при динамической скорости обучения она даёт почти тот же результат, если скорость обучения не меняется резко. Преимущество изменённой формулы в том, что она обрабатывает нулевую и близкую к нулю скорость обучения без генерации 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