tf.keras.optimizers.Ftrl
| Просмотреть исходный код на GitHub |
Оптимизатор, реализующий алгоритм FTRL.
Наследуется от: Optimizer
tf.keras.optimizers.Ftrl(
learning_rate=0.001, learning_rate_power=-0.5, initial_accumulator_value=0.1,
l1_regularization_strength=0.0, l2_regularization_strength=0.0, name='Ftrl',
l2_shrinkage_regularization_strength=0.0, **kwargs
)
См. Алгоритм 1 в этой статье. Эта версия поддерживает как онлайн L2 (штраф L2, указанный в статье выше), так и L2 типа сжатия (добавление штрафа L2 к функции потерь).
| Аргументы | |
|---|---|
learning_rate | Значение с плавающей точкой, или расписание, которое является tf.keras.optimizers.schedules.LearningRateSchedule. Скорость обучения. |
learning_rate_power | Значение с плавающей точкой, должно быть меньше или равно нулю. Управляет уменьшением скорости обучения во время обучения. Используйте ноль для фиксированной скорости обучения. |
initial_accumulator_value | Начальное значение для аккумуляторов. Допускаются только нулевые или положительные значения. |
l1_regularization_strength | Значение с плавающей точкой, должно быть больше или равно нулю. |
l2_regularization_strength | Значение с плавающей точкой, должно быть больше или равно нулю. |
name | Необязательное префиксное имя для операций, созданных при применении градиентов. По умолчанию "Ftrl". |
l2_shrinkage_regularization_strength | Значение с плавающей точкой, должно быть больше или равно нулю. Это отличается от вышеупомянутого L2, так как вышеупомянутое L2 является штрафом стабилизации, а это L2 сжатия — штрафом по величине. При разряженной входной информации сжатие произойдёт только для активных весов. |
**kwargs | Дополнительные ключевые аргументы. Допускается использование "clipnorm" или "clipvalue". "clipnorm" (с плавающей точкой) — ограничение градиентов по норме; "clipvalue" (с плавающей точкой) — ограничение градиентов по значению. |
Ссылка:
| Аргументы | |
|---|---|
name | Непустая строка. Имя, используемое для аккумуляторов, созданных для оптимизатора. |
**kwargs | Дополнительные ключевые аргументы. Допускается использование {clipnorm, clipvalue, lr, decay}. clipnorm — ограничение градиентов по норме; clipvalue — ограничение градиентов по значению, decay включена для обратной совместимости, чтобы разрешить обратное обратное затухание скорости обучения. lr включена для обратной совместимости, рекомендуется использовать learning_rate вместо нее. |
| Исключения | |
|---|---|
ValueError | Если имя имеет неправильный формат. |
| Атрибуты | |
|---|---|
iterations | Переменная. Количество шагов обучения, выполненных этим оптимизатором. |
weights | Возвращает переменные этого оптимизатора в порядке создания. |
Методы
add_slot
add_slot(
var, slot_name, initializer='zeros'
)
Добавить новую переменную слота для var.
add_weight
add_weight(
name, shape, dtype=None, initializer='zeros', trainable=None,
synchronization=tf.VariableSynchronization.AUTO,
aggregation=tf.compat.v1.VariableAggregation.NONE
)
apply_gradients
apply_gradients(
grads_and_vars, name=None, experimental_aggregate_gradients=True
)
Применить градиенты к переменным.
Это вторая часть minimize(). Возвращает Operation для применения градиентов.
По умолчанию метод суммирует градиенты со всех реплик при использовании tf.distribute.Strategy. Вы можете самостоятельно агрегировать градиенты, передав experimental_aggregate_gradients=False.
Пример:
grads = tape.gradient(loss, vars)
grads = tf.distribute.get_replica_context().all_reduce('sum', grads)
# Processing aggregated gradients.
optimizer.apply_gradients(zip(grads, vars),
experimental_aggregate_gradients=False)
| Аргументы | |
|---|---|
grads_and_vars | Список пар (градиент, переменная). |
name | Необязательное имя возвращаемой операции. По умолчанию — имя, переданное конструктору Optimizer. |
experimental_aggregate_gradients | Нужно ли суммировать градиенты от разных реплик при наличии tf.distribute.Strategy. Если False, ответственность за агрегацию градиентов лежит на пользователе. По умолчанию True. |
| Возвращает | |
|---|---|
Operation для применения указанных градиентов. Значение iterations автоматически увеличивается на 1. |
| Исключения | |
|---|---|
TypeError | Если grads_and_vars имеет неправильный формат. |
ValueError | Если ни одна из переменных не имеет градиентов. |
from_config
@classmethod
from_config(
config, custom_objects=None
)
Создать оптимизатор из его конфигурации.
Этот метод является обратным к get_config, позволяющим восстановить тот же оптимизатор из словаря конфигурации.
| Аргументы | |
|---|---|
config | Словарь Python, обычно результат get_config. |
custom_objects | Словарь Python, сопоставляющий имена дополнительным объектам Python, используемым для создания данного оптимизатора, например, функции, используемой для гиперпараметра. |
| Возвращает | |
|---|---|
| Экземпляр оптимизатора. |
get_config
get_config()
Возвращает конфигурацию оптимизатора.
Конфигурация оптимизатора — это словарь Python (сериализуемый), содержащий конфигурацию оптимизатора. Тот же оптимизатор можно позже восстановить (без сохранённого состояния) из этой конфигурации.
| Возвращает | |
|---|---|
| Словарь Python. |
get_gradients
get_gradients(
loss, params
)
Возвращает градиенты loss по отношению к params.
| Аргументы | |
|---|---|
loss | Тензор потерь. |
params | Список переменных. |
| Возвращает | |
|---|---|
| Список тензоров градиента. |
| Исключения | |
|---|---|
ValueError | В случае, если градиент не может быть вычислен (например, если функция градиента не реализована). |
get_slot
get_slot(
var, slot_name
)
get_slot_names
get_slot_names()
Список имён слотов данного оптимизатора.
get_updates
get_updates(
loss, params
)
get_weights
get_weights()
Возвращает текущие веса оптимизатора.
Веса оптимизатора — это его состояние (т.е. переменные). Эта функция возвращает значения весов, ассоциированные с этим оптимизатором, как список массивов NumPy. Первое значение всегда — счётчик итераций оптимизатора, а затем переменные состояния оптимизатора в порядке их создания. Полученный список можно использовать для загрузки состояния в аналогичные оптимизаторы с такой же параметризацией.
END_OF_DOCUMENT_MARKERНапример, оптимизатор RMSprop для этой простой модели возвращает список из трёх значений — количество итераций, а затем среднеквадратическое значение ядра и смещения единственного слоя Dense:
opt = tf.keras.optimizers.RMSprop()
m = tf.keras.models.Sequential([tf.keras.layers.Dense(10)])
m.compile(opt, loss='mse')
data = np.arange(100).reshape(5, 20)
labels = np.zeros(5)
print('Training'); results = m.fit(data, labels)
Training ...
len(opt.get_weights())
3
| Возвращаемые значения | |
|---|---|
| Значения весов в виде списка массивов NumPy. |
minimize
minimize(
loss, var_list, grad_loss=None, name=None
)
Минимизировать loss путём обновления var_list.
Этот метод просто вычисляет градиент с помощью tf.GradientTape и вызывает apply_gradients(). Если вы хотите обработать градиент перед применением, то вызовите tf.GradientTape и apply_gradients() явно вместо использования этой функции.
| Аргументы | |
|---|---|
loss | Функция без аргументов, возвращающая значение, которое нужно минимизировать. |
var_list | Список или кортеж объектов Variable, которые нужно обновить, чтобы минимизировать loss, или функция, возвращающая список или кортеж объектов Variable. Используйте функцию, когда список переменных может быть неполным перед minimize, так как переменные создаются в первый раз, когда вызывается loss. |
grad_loss | Необязательно. Объект Tensor, содержащий вычисленный градиент для loss. |
name | Необязательное имя возвращаемой операции. |
| Возвращаемые значения | |
|---|---|
Объект Operation, который обновляет переменные в var_list. Значение iterations автоматически увеличится на 1. |
| Исключения | |
|---|---|
ValueError | Если некоторые переменные не являются объектами Variable. |
set_weights
set_weights(
weights
)
Устанавливает веса оптимизатора.
Веса оптимизатора — это его состояние (т.е. переменные). Эта функция принимает значения весов, ассоциированные с этим оптимизатором, в виде списка массивов NumPy. Первое значение всегда — счётчик итераций оптимизатора, а затем — переменные состояния оптимизатора в порядке их создания. Переданные значения используются для установки нового состояния оптимизатора.
Например, оптимизатор RMSprop для этой простой модели принимает список из трёх значений — количество итераций, а затем среднеквадратическое значение ядра и смещения единственного слоя Dense:
opt = tf.keras.optimizers.RMSprop()
m = tf.keras.models.Sequential([tf.keras.layers.Dense(10)])
m.compile(opt, loss='mse')
data = np.arange(100).reshape(5, 20)
labels = np.zeros(5)
print('Training'); results = m.fit(data, labels)
Training ...
new_weights = [np.array(10), np.ones([20, 10]), np.zeros([10])]
opt.set_weights(new_weights)
opt.iterations
<tf.Variable 'RMSprop/iter:0' shape=() dtype=int64, numpy=10>
| Аргументы | |
|---|---|
weights | Значения весов в виде списка массивов NumPy. |
variables
variables()
Возвращает переменные этого оптимизатора в порядке их создания.
© 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.3/api_docs/python/tf/keras/optimizers/Ftrl