tf.contrib.opt.ScipyOptimizerInterface
Оборачивание, позволяющее scipy.optimize.minimize управлять tf.compat.v1.Session.
Наследуется от: ExternalOptimizerInterface
tf.contrib.opt.ScipyOptimizerInterface(
loss, var_list=None, equalities=None, inequalities=None, var_to_bounds=None,
**optimizer_kwargs
)
Пример:
vector = tf.Variable([7., 7.], 'vector')
# Make vector norm as small as possible.
loss = tf.reduce_sum(tf.square(vector))
optimizer = ScipyOptimizerInterface(loss, options={'maxiter': 100})
with tf.compat.v1.Session() as session:
optimizer.minimize(session)
# The value of vector should now be [0., 0.].
Пример с простыми ограничениями на границы:
vector = tf.Variable([7., 7.], 'vector')
# Make vector norm as small as possible.
loss = tf.reduce_sum(tf.square(vector))
optimizer = ScipyOptimizerInterface(
loss, var_to_bounds={vector: ([1, 2], np.infty)})
with tf.compat.v1.Session() as session:
optimizer.minimize(session)
# The value of vector should now be [1., 2.].
Пример с более сложными ограничениями:
vector = tf.Variable([7., 7.], 'vector')
# Make vector norm as small as possible.
loss = tf.reduce_sum(tf.square(vector))
# Ensure the vector's y component is = 1.
equalities = [vector[1] - 1.]
# Ensure the vector's x component is >= 1.
inequalities = [vector[0] - 1.]
# Our default SciPy optimization algorithm, L-BFGS-B, does not support
# general constraints. Thus we use SLSQP instead.
optimizer = ScipyOptimizerInterface(
loss, equalities=equalities, inequalities=inequalities, method='SLSQP')
with tf.compat.v1.Session() as session:
optimizer.minimize(session)
# The value of vector should now be [1., 1.].
| Аргументы | |
|---|---|
loss | Скаляр Tensor для минимизации. |
var_list | Необязательный список list объектов Variable для обновления для минимизации loss. По умолчанию — список переменных, собранных в графе по ключу GraphKeys.TRAINABLE_VARIABLES. |
equalities | Необязательный список скалярных Tensor ограничений на равенство, которые должны быть равны нулю. |
inequalities | Необязательный список скалярных Tensor ограничений на неравенство, которые должны быть неотрицательными. |
var_to_bounds | Необязательный словарь, где каждый ключ — оптимизационная Variable, а соответствующее значение — кортеж длиной 2 с (low, high) границами. Хотя применение этого рода простых ограничений можно осуществить с помощью аргумента inequalities, не все алгоритмы оптимизации поддерживают общие ограничения на неравенство, например, L-BFGS-B. И low, и high могут быть числами или чем-либо, преобразуемым в массив NumPy, который можно транслировать в форму var (используя np.broadcast_to). Для указания отсутствия границ используйте None (или +/- np.infty). Например, если var — это матрица 2x3, то соответствующие bounds могут быть заданы следующим образом:
|
**optimizer_kwargs | Другие аргументы, специфичные для подкласса. |
Методы
minimize
minimize(
session=None, feed_dict=None, fetches=None, step_callback=None,
loss_callback=None, **run_kwargs
)
Минимизация скалярного Tensor.
Переменные, подлежащие оптимизации, обновляются непосредственно в конце оптимизации.
Обратите внимание, что этот метод не просто возвращает результат минимизации, в отличие от Optimizer.minimize(); вместо этого он фактически выполняет минимизацию, выполняя команды для управления Session.
| Аргументы | |
|---|---|
session | Экземпляр Session . |
feed_dict | Словарь feed, передаваемый в вызовы session.run. |
fetches | Список Tensor для извлечения и передачи loss_callback в качестве позиционных аргументов. |
step_callback | Функция, вызываемая на каждом шаге оптимизации; аргументы — текущие значения всех переменных оптимизации, сжатые в один вектор. |
loss_callback | Функция, вызываемая каждый раз при вычислении потери и градиентов, с предоставленными значениями fetch в качестве позиционных аргументов. |
**run_kwargs | Аргументы kwargs для передачи в session.run. |
© 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/opt/ScipyOptimizerInterface