View source on GitHub
|
Applies the rotosolve algorithm.
tfq.optimizers.rotosolve_minimize(
expectation_value_function,
initial_position,
tolerance=1e-05,
max_iterations=50,
name=None
)
The rotosolve algorithm can be used to minimize a linear combination
of quantum measurement expectation values. See the following paper:
arXiv:1903.12166, Ken M. Nakanishi. arXiv:1905.09692, Mateusz Ostaszewski.
Usage:
Here is an example of optimize a function which consists summation of a few sinusoids.
n = 10 # Number of sinusoidscoefficient = tf.random.uniform(shape=[n])min_value = -tf.math.reduce_sum(tf.abs(coefficient))func = lambda x:tf.math.reduce_sum(tf.sin(x) * coefficient)# Optimize the function with rotosolve, start with random parametersresult = tfq.optimizers.rotosolve_minimize(func, np.random.random(n))result.convergedtf.Tensor(True, shape=(), dtype=bool)result.objective_valuetf.Tensor(-4.7045116, shape=(), dtype=float32)
Args | |
|---|---|
expectation_value_function
|
A Python callable that accepts
a point as a real tf.Tensor and returns a tf.Tensors
of real dtype containing the value of the function.
The function to be minimized. The input is of shape [n],
where n is the size of the trainable parameters.
The return value is a real tf.Tensor Scalar (matching shape
[1]). This must be a linear combination of quantum
measurement expectation value, otherwise this algorithm cannot
work.
|
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.
|
name
|
(Optional) Python str. The name prefixed to the ops created
by this function. If not supplied, the default name 'minimize'
is used.
|
Returns | |
|---|---|
optimizer_results
|
A RotosolveOptimizerResults object contains the result of the optimization process. |
View source on GitHub