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 | Использовать ленивый Adam вместо Adam. Ленивый 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 | Управление обрезкой градиента. Установите одно положительное скалярное значение для обрезки или тройку скалярных значений (мин, макс) для установки отдельного максимального или минимального значения. Если одно из двух значений равно 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