mindquantum.parameterresolver¶
Parameter resolver.
-
class
mindquantum.parameterresolver.
ParameterResolver
(data=None)[source]¶ A ParameterRsolver can set the parameter of parameterized quantum gate or parameterized quantum circuit.
By specific which part of parameters needs to calculate gradient, the PQC operator can only calculate gradient of these parameters.
- Parameters
data (dict) – initial parameter names and its values.
Examples
>>> pr = ParameterResolver({'a': 0.3}) >>> pr['b'] = 0.5 >>> pr.no_grad_part('a') >>> pr *= 2 >>> pr {'a': 0.6, 'b': 1.0} >>> pr.no_grad_parameters {'a'}
-
no_grad
()[source]¶ Set all parameters to not require gradient calculation.
Examples
>>> pr = ParameterResolver({'a': 1, 'b': 2}) >>> pr.no_grad() >>> pr.requires_grad_parameters set()
-
no_grad_part
(*names)[source]¶ Set part of parameters that not requires grad.
- Parameters
- Returns
Examples
>>> pr = ParameterResolver({'a': 1, 'b': 2}) >>> pr.no_grad_part('a') >>> pr.requires_grad_parameters {'b'}
-
property
para_name
¶ Get the parameters name.
- Returns
list[str], Parameters name.
Examples
>>> pr = ParameterResolver({'a': 1, 'b': 2}) >>> pr.para_name ['a', 'b']
-
property
para_value
¶ Get the parameters value.
- Returns
list[float], Parameters value.
Examples
>>> pr = ParameterResolver({'a': 1, 'b': 2}) >>> pr.para_value [1, 2]
-
requires_grad
()[source]¶ Set all parameters of this parameter resolver to require gradient calculation.
Examples
>>> pr = ParameterResolver({'a': 1, 'b': 2}) >>> pr.no_grad_part('a') >>> pr.requires_grad() >>> pr.requires_grad_parameters {'a', 'b'}
-
requires_grad_part
(*names)[source]¶ Set part of parameters that requires grad.
- Parameters
- Returns
Examples
>>> pr = ParameterResolver({'a': 1, 'b': 2}) >>> pr.no_grad() >>> pr.requires_grad_part('a') >>> pr.requires_grad_parameters {'a'}
-
update
(others)[source]¶ Update this parameter resolver with other parameter resolver.
- Parameters
others (
mindquantum.parameterresolver.ParameterResolver
) – other parameter resolver.- Raises
ValueError – If some parameters require grad and not require grad in other parameter resolver and vise versa.
Examples
>>> pr1 = ParameterResolver({'a': 1}) >>> pr2 = ParameterResolver({'b': 2}) >>> pr2.no_grad() >>> pr1.update(pr2) >>> pr1 {'a': 1, 'b': 2} >>> pr1.no_grad_parameters {'b'}