tf.contrib.layers.optimize_loss
Учитывая функцию потерь и параметры оптимизатора, возвращает операцию обучения.
tf.contrib.layers.optimize_loss(
loss, global_step, learning_rate, optimizer, gradient_noise_scale=None,
gradient_multipliers=None, clip_gradients=None, learning_rate_decay_fn=None,
update_ops=None, variables=None, name=None, summaries=None,
colocate_gradients_with_ops=False, increment_global_step=True
)
Различные способы передачи оптимизаторов включают:
- по строке, задающей имя оптимизатора. См. OPTIMIZER_CLS_NAMES для полного списка. Например,
optimize_loss(..., optimizer='Adam'). - по функции, принимающей скорость обучения
Tensorв качестве аргумента и возвращающей экземплярOptimizer. Например,optimize_loss(..., optimizer=lambda lr: tf.compat.v1.train.MomentumOptimizer(lr, momentum=0.5)). В качестве альтернативы, еслиlearning_rateявляетсяNone, функция не принимает аргументов. Например,optimize_loss(..., learning_rate=None, optimizer=lambda: tf.compat.v1.train.MomentumOptimizer(0.5, momentum=0.5)). - по подклассу
Optimizer, имеющему конструктор с одним аргументом (аргумент — скорость обучения), такой как AdamOptimizer или AdagradOptimizer. Например,optimize_loss(..., optimizer=tf.compat.v1.train.AdagradOptimizer). - по экземпляру подкласса
Optimizer. Например,optimize_loss(..., optimizer=tf.compat.v1.train.AdagradOptimizer(0.5)).
| Аргументы | |
|---|---|
loss | Скалярная Tensor. |
global_step | Скалярное целое число Tensor, счётчик шагов для обновления на каждом шаге, если increment_global_step не False. Если не указано, оно будет взято из стандартной схемы графа (см. tf.compat.v1.train.get_global_step для подробностей). Если оно не было создано, шаг не будет увеличиваться при каждом обновлении весов. learning_rate_decay_fn требует global_step. |
learning_rate | Плавающее число или Tensor, величина обновления на каждом шаге обучения. Может быть None. |
optimizer | Строка, класс или экземпляр оптимизатора, используемый в качестве тренера. Строка должна быть именем оптимизатора, например, 'SGD', 'Adam', 'Adagrad'. Полный список в константе OPTIMIZER_CLS_NAMES. Класс должен быть подклассом tf.Optimizer, реализующим функции compute_gradients и apply_gradients. Экземпляр оптимизатора должен быть экземпляром подкласса tf.Optimizer и иметь функции compute_gradients и apply_gradients . |
gradient_noise_scale | Плавающее число или None, добавляет шум с нулевым средним, масштабируемый этим значением. |
gradient_multipliers | Словарь переменных или имён переменных с плавающими значениями. Если присутствует, градиенты для указанных переменных будут умножены на заданную константу. |
clip_gradients | Плавающее число, вызываемая функция или None. Если предоставлено плавающее число, применяется глобальное ограничение, чтобы предотвратить превышение нормы градиента этим значением. В качестве альтернативы, можно указать вызываемую функцию, например, adaptive_clipping_fn(). Эта функция принимает список кортежей (gradients, variables) и возвращает то же самое с изменёнными градиентами. |
learning_rate_decay_fn | Функция, принимающая learning_rate и global_step Tensor, возвращающая Tensor. Может быть использована для реализации любых функций распада скорости обучения. Например: tf.compat.v1.train.exponential_decay. Игнорируется, если learning_rate не указано. |
update_ops | Список операций обновления Operation для выполнения на каждом шаге. Если None, использует элементы коллекции UPDATE_OPS. Порядок выполнения между update_ops и loss не определён. |
variables | Список переменных для оптимизации или None для использования всех обучаемых переменных. |
name | Имя для этой операции используется для группировки операций и сводок. |
summaries | Список внутренних величин для визуализации в tensorboard. Если не задано, будут отображаться функция потерь, скорость обучения и глобальная норма градиентов. Полный список возможных значений находится в OPTIMIZER_SUMMARIES. |
colocate_gradients_with_ops | Если True, попытаться разместить градиенты с соответствующей операцией. |
increment_global_step | Нужно ли увеличивать global_step. Если ваша модель вызывает optimize_loss несколько раз за шаг обучения (например, для оптимизации разных частей модели), используйте этот аргумент, чтобы избежать увеличения global_step больше, чем необходимо. |
| Возвращаемое значение | |
|---|---|
| Операция обучения. |
| Исключения | |
|---|---|
ValueError | если:
|
© 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/r1.15/api_docs/python/tf/contrib/layers/optimize_loss