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: bool = None,
slot_variable_creation_fn: Optional[SlotVarCreationFnType] = None,
clipvalue: Optional[ClipValueType] = None
)
Передайте это в 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 | Использовать ленивый Adam вместо Adam. Ленивый Adam обучается быстрее. |
sum_inside_sqrt | Если это значение истинно, формула обновления 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 | Если значение истинно, weight_decay_factor умножается на текущую скорость обучения. |
slot_variable_creation_fn | Если вы хотите напрямую контролировать создание переменных слотов, установите это значение в вызываемый объект, принимающий три параметра: переменную таблицы, список имен слотов, которые нужно создать для нее, и список инициализаторов. Эта функция должна возвращать словарь с именами слотов в качестве ключей и созданными переменными в качестве значений с типами, соответствующими переменной таблицы. При установке в значение None (по умолчанию) используется встроенное создание переменных. |
clipvalue | Управляет обрезкой градиента. Устанавливается либо в положительное скалярное значение для обрезки, либо в тройку скалярных значений (min, max) для установки отдельного максимального или минимального значения. Если одно из двух значений равно None, то в данном направлении обрезки не будет. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/tpu/experimental/embedding/Adam