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. Default: None.
Examples
>>> from mindquantum import ParameterResolver >>> 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'}
- combination(pr)[source]
Apply linear combination between this parameter resolver with input pr.
- Parameters
pr (Union[dict, ParameterResolver]) – The parameter resolver you want to do linear combination.
- Returns
numbers.Number, the combination result.
Examples: >>> from mindquantum import ParameterResolver >>> pr1 = ParameterResolver({‘a’: 1, ‘b’: 2}) >>> pr2 = ParameterResolver({‘a’: 2, ‘b’: 3}) >>> pr1.combination(pr2)
- conjugate()[source]
Get the conjugate of the parameter resolver.
- Returns
ParameterResolver, the conjugate version of this parameter resolver.
Examples
>>> from mindquantum.parameterresolver import ParameterResolver as PR >>> pr = PR({'a' : 1, 'b': 1j}) >>> pr.conjugate().expression() a - 1.0*I*b
- expression()[source]
Get the expression of this parameter resolver.
- Returns
sympy.Expr, the symbol expression of this parameter resolver.
Examples
>>> from mindquantum.parameterresolver import ParameterResolver as PR >>> pr = PR({'a' : 2, 'b' : 0.3}) >>> pr.expression() 2*a + 0.3*b
- property imag
Get the real part of this parameter resolver
- Returns
ParameterResolver, the image part of this parameter resolver.
Examples
>>> from mindquantum.parameterresolver import ParameterResolver as PR >>> pr = PR({'a': 1.2 + 1.3j}) >>> pr.imag() {'a': 1.3}
- no_grad()[source]
Set all parameters to not require gradient calculation. Inplace operation.
- Returns
ParameterResolver, the parameter resolver itself.
Examples
>>> from mindquantum import ParameterResolver >>> 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
ParameterResolver, the parameter resolver itself.
Examples
>>> from mindquantum import ParameterResolver >>> 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, a list of parameters name.
Examples
>>> from mindquantum import ParameterResolver >>> pr = ParameterResolver({'a': 1, 'b': 2}) >>> pr.para_name ['a', 'b']
- property para_value
Get the parameters value.
- Returns
list, a list of parameters value.
Examples
>>> from mindquantum import ParameterResolver >>> pr = ParameterResolver({'a': 1, 'b': 2}) >>> pr.para_value [1, 2]
- property real
Get the real part of this parameter resolver
- Returns
ParameterResolver, the real part of this parameter resolver.
Examples
>>> from mindquantum.parameterresolver import ParameterResolver as PR >>> pr = PR({'a': 1.2 + 1.3j}) >>> pr.real() {'a': 1.2}
- requires_grad()[source]
Set all parameters of this parameter resolver to require gradient calculation. Inplace operation.
- Returns
ParameterResolver, the parameter resolver itself.
Examples
>>> from mindquantum import ParameterResolver >>> 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. Inplace operation.
- Parameters
- Returns
ParameterResolver, the parameter resolver itself.
Examples
>>> from mindquantum import ParameterResolver >>> 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 (ParameterResolver) – other parameter resolver.
- Raises
ValueError – If some parameters require grad and not require grad in other parameter resolver and vise versa.
Examples
>>> from mindquantum import ParameterResolver >>> pr1 = ParameterResolver({'a': 1}) >>> pr2 = ParameterResolver({'b': 2}) >>> pr2.no_grad() >>> pr1.update(pr2) >>> pr1 {'a': 1, 'b': 2} >>> pr1.no_grad_parameters {'b'}