tf.tpu.experimental.embedding.Adam
Параметры оптимизации для Adam с TPU-эмбеддингами.
tf.tpu.experimental.embedding.Adam(
learning_rate: Union[float, Callable[[], float]] = 0.001,
beta_1: float = 0.9,
beta_2: float = 0.999,
epsilon: float = 1e-07,
lazy_adam: bool = True,
sum_inside_sqrt: bool = True,
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,
low_dimensional_packing_status: bool = False
)
Передайте это в tf.tpu.experimental.embedding.TPUEmbedding через аргумент optimizer, чтобы задать глобальный оптимизатор и его параметры:
Примечание: По умолчанию этот оптимизатор работает в ленивом режиме, то есть он не применяет градиентное обновление, равное нулю, к строкам, которые не использовались при поиске. Это поведение можно изменить, задав дляlazy_adamзначениеFalse.
embedding = tf.tpu.experimental.embedding.TPUEmbedding(
...
optimizer=tf.tpu.experimental.embedding.Adam(0.1))
Это также можно использовать в tf.tpu.experimental.embedding.TableConfig в качестве параметра оптимизатора, чтобы задать оптимизатор для конкретной таблицы. Он переопределит оптимизатор и параметры глобального оптимизатора эмбеддингов, определённые выше:
table_one = tf.tpu.experimental.embedding.TableConfig(
vocabulary_size=...,
dim=...,
optimizer=tf.tpu.experimental.embedding.Adam(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.Adam(0.1))
В приведённом выше примере первый признак будет искаться в таблице со скоростью обучения 0.2, а второй признак — в таблице со скоростью обучения 0.1.
Полное описание этих параметров и их влияния на алгоритм оптимизации см. в файле 'tensorflow/core/protobuf/tpu/optimization_parameters.proto'.
| Аргументы | |
|---|---|
learning_rate | Скорость обучения. Это должно быть значение с плавающей точкой или функция без аргументов для динамической скорости обучения. |
beta_1 | Значение с плавающей точкой. Коэффициент экспоненциального затухания оценок первого момента. |
beta_2 | Значение с плавающей точкой. Коэффициент экспоненциального затухания оценок второго момента. |
epsilon | Небольшая константа для численной устойчивости. |
lazy_adam | Использовать Lazy Adam вместо Adam. Lazy Adam ускоряет обучение. |
sum_inside_sqrt | Если задано значение true, формула обновления Adam изменяется с m / (sqrt(v) + epsilon) на m / sqrt(v + epsilon**2). Этот параметр повышает производительность обучения на TPU и, как ожидается, не ухудшает качество модели. |
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, ограничение в соответствующем направлении не применяется. |
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/Adam