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'}
mindspore_data()[source]

Generate data for PQC operator.

Returns

Dict.

no_grad()[source]

Set all parameters to not require gradient calculation.

Returns

mindquantum.parameterresolver.ParameterResolver

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

names (tuple[str]) – Parameters that not requires grad.

Returns

mindquantum.parameterresolver.ParameterResolver

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.

Returns

mindquantum.parameterresolver.ParameterResolver

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

names (tuple[str]) – Parameters that requires grad.

Returns

mindquantum.parameterresolver.ParameterResolver

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'}