tfq.optimizers.spsa_minimize

Applies the SPSA algorithm.

The SPSA algorithm can be used to minimize a noisy function. See:

SPSA website

Usage:

Here is an example of optimize a function which consists the summation of a few quadratics.

n = 5  # Number of quadratics
coefficient = tf.random.uniform(minval=0, maxval=1, shape=[n])
min_value = 0
func = func = lambda x : tf.math.reduce_sum(np.power(x, 2) *             coefficient)
# Optimize the function with SPSA, start with random parameters
result = tfq.optimizers.spsa_minimize(func, np.random.random(n))
result.converged
tf.Tensor(True, shape=(), dtype=bool)
result.objective_value
tf.Tensor(0.0013349084, shape=(), dtype=float32)

expectation_value_function Python callable that accepts a real valued tf.Tensor with shape [n] where n is the number of function parameters. The return value is a real tf.Tensor Scalar (matching shape [1]).
initial_position Real tf.Tensor of shape [n]. The starting point, or points when using batching dimensions, of the search procedure. At these points the function value and the gradient norm should be finite.
tolerance Scalar tf.Tensor of real dtype. Specifies the tolerance for the procedure. If the supremum norm between two iteration vector is below this number, the algorithm is stopped.
lr Scalar tf.Tensor of real dtype. Specifies the learning rate
alpha Scalar tf.Tensor of real dtype. Specifies scaling of the learning rate.
perturb Scalar tf.Tensor of real dtype. Specifies the size of the perturbations.
gamma Scalar tf.Tensor of real dtype. Specifies scaling of the size of the perturbations.
blocking Boolean. If true, then the optimizer will only accept updates that improve the objective function.
allowed_increase Scalar tf.Tensor of real dtype. Specifies maximum allowable increase in objective function (only applies if blocking is true).
seed (Optional) Python integer. Used to create a random seed for the perturbations.
name (Optional) Python str. The name prefixed to the ops created by this function. If not supplied, the default name 'minimize' is used.

optimizer_results A SPSAOptimizerResults object contains the result of the optimization process.