scikit_quri.backend package

Contents

scikit_quri.backend package#

Submodules#

scikit_quri.backend.base_estimator module#

class scikit_quri.backend.base_estimator.BaseEstimator[source]#

Bases: object

Estimatorを実行する際の基底クラス estimateメソッドに対するinterfaceを定義

abstract estimate(operators, states)[source]#

operatorsとstatesの組み合わせに対して期待値を計算する operatorsまたはstatesのどちらかが1つの場合、もう一方の数に合わせて繰り返す もしくは、両方の数が同じ場合、1対1で対応させる それ以外の場合、ValueErrorを投げる

Parameters:
Returns:

operatorsとstatesの組み合わせに対する期待値のリスト

Return type:

Iterable[Estimate[complex]]

scikit_quri.backend.base_gradient_estimator module#

class scikit_quri.backend.base_gradient_estimator.BaseGradientEstimator[source]#

Bases: object

Gradient Estimatorを実行する際の基底クラス estimate_gradientメソッドに対するinterfaceを定義

abstract estimate_gradient(operators, state, params)[source]#

operatorsとstatesの組み合わせに対して勾配を計算する operatorsまたはstatesのどちらかが1つの場合、もう一方の数に合わせて繰り返す もしくは、両方の数が同じ場合、1対1で対応させる それ以外の場合、ValueErrorを投げる

Parameters:
  • operators (Union[Operator, PauliLabel]) – 勾配を計算する演算子のリスト

  • states – 勾配を計算する状態のリスト

  • params (Sequence[float]) – 勾配を計算するパラメータのリスト

  • state (_ParametricStateT) –

Returns:

operatorsとstatesの組み合わせに対する勾配のリスト

Return type:

Estimates[complex]

abstract estimate_learning_param_gradient(operators, circuit, params)[source]#

学習パラメータに対する勾配を計算する operatorsまたはstatesのどちらかが1つの場合、もう一方の数に合わせて繰り返す もしくは、両方の数が同じ場合、1対1で対応させる それ以外の場合、ValueErrorを投げる

Parameters:
Returns:

operatorsとstatesの組み合わせに対する学習パラメータの勾配のリスト

Return type:

Sequence[complex]

scikit_quri.backend.oqtopus_estimator module#

class scikit_quri.backend.oqtopus_estimator.OqtopusEstimator(device_id, shots=1000, config=None)[source]#

Bases: BaseEstimator

Estimator class that computes expectation values on real quantum hardware via quri-parts-oqtopus. Requires an OQTOPUS configuration file at ~/.oqtopus. See: https://quri-parts-oqtopus.readthedocs.io/en/stable/usage/getting_started/#prepare-oqtopus-configuration-file

Parameters:
  • device_id (str) – ID of the device to run on.

  • shots (int) – Number of shots per circuit execution. Defaults to 1000.

  • config (Optional[OqtopusConfig]) – OQTOPUS configuration. Defaults to None.

estimate(operators, states)[source]#

Compute expectation values for combinations of operators and states. If either operators or states contains a single element, it is broadcast to match the length of the other. If both contain multiple elements, they must have the same length and are paired one-to-one.

Parameters:
  • operators – List of operators for which to compute expectation values.

  • states – List of quantum states.

Returns:

List of expectation values for each (operator, state) pair.

Raises:
  • ValueError – If operators or states is empty, or if both have multiple elements with mismatched lengths.

  • BackendError – If execution on OQTOPUS fails.

scikit_quri.backend.oqtopus_gradient_estimator module#

class scikit_quri.backend.oqtopus_gradient_estimator.LearningCircuitParameter(input_param, learning_param)[source]#

Bases: object

学習回路のパラメータを保持するデータクラス。

Parameters:
input_param#

入力データに対応するパラメータ。

Type:

numpy.ndarray[tuple[int, …], numpy.dtype[numpy.float64]]

learning_param#

最適化対象の学習パラメータ。

Type:

numpy.ndarray[tuple[int, …], numpy.dtype[numpy.float64]]

input_param: ndarray[tuple[int, ...], dtype[float64]]#
learning_param: ndarray[tuple[int, ...], dtype[float64]]#
scikit_quri.backend.oqtopus_gradient_estimator.numerical_gradient_estimates(op, circuit, params, delta)[source]#

数値微分により勾配を計算する。

中心差分法を用いて各学習パラメータに対する勾配を計算する。 grad[i] = (f(θ_i + δ/2) - f(θ_i - δ/2)) / δ

Parameters:
Returns:

各学習パラメータに対する勾配のシーケンス。

Return type:

Sequence[complex]

class scikit_quri.backend.oqtopus_gradient_estimator.OqtopusGradientEstimator[source]#

Bases: BaseGradientEstimator

Oqtopusを用いて勾配を計算するGradient Estimator Class。

OqtopusEstimatorを内部で使用し、数値微分により勾配を計算する。

estimate_gradient(operators, state, params)[source]#

全パラメータに対する勾配を計算する。

Note

現在未実装。

Raises:

NotImplementedError – このメソッドは未実装。

estimate_learning_param_gradient(operators, circuit, params)[source]#

学習パラメータに対する勾配を計算する。

入力パラメータは固定し、学習パラメータのみに対する勾配を計算する。

Parameters:
  • operators – 期待値を計算する演算子。

  • circuit – 学習回路。

  • params – 全パラメータ(入力+学習)の値。

Returns:

各学習パラメータに対する勾配のシーケンス。

Return type:

Sequence[complex]

scikit_quri.backend.oqtopus_sampler module#

class scikit_quri.backend.oqtopus_sampler.OqtopusSampler(device_id, config)[source]#

Bases: object

Parameters:
get_device_qubit_count()[source]#

Oqtopusのデバイスの量子ビット数を取得する関数

Returns:

Oqtopusのデバイスの量子ビット数

Return type:

int

Raises:

BackendError – Oqtopusでの実行に失敗した場合

sample(circuit, shots)[source]#
Raises:

BackendError – Oqtopusでの実行に失敗した場合

Parameters:
  • circuit (ImmutableQuantumCircuit) –

  • shots (int) –

Return type:

Mapping[int, Union[int, float]]

concurrent_sample(circuit_shots_tuples)[source]#

concurrentにsampleする関数 quri-partsのConcurrentSamplerに合わせるため、shotsはtupleの最大値を使用する devicesの量子ビット数を超える量子回路の組み合わせに対しては、複数回に分けて実行する :raises BackendError: Oqtopusでの実行に失敗した場合

Parameters:

circuit_shots_tuples (Iterable[tuple[quri_parts.rust.circuit.circuit.ImmutableQuantumCircuit, int]]) –

Return type:

Iterable[Mapping[int, Union[int, float]]]

scikit_quri.backend.oqtopus_sampler.create_oqtopus_sampler(device_id, config=None)[source]#

Oqtopus用のSamplerを生成する関数 quri-partsのSamplerとして動作

Returns:

Oqtopus用のSampler

Return type:

Sampler

Parameters:
scikit_quri.backend.oqtopus_sampler.create_oqtopus_concurrent_sampler(device_id, config=None)[source]#

Oqtopus用のConcurrentSamplerを生成する関数 quri-partsのConcurrentSamplerとして動作 :returns: Oqtopus用のConcurrentSampler :rtype: ConcurrentSampler

Parameters:

scikit_quri.backend.sim_estimator module#

class scikit_quri.backend.sim_estimator.SimEstimator[source]#

Bases: BaseEstimator

quri-parts-qulacsを用いて期待値を計算するSimulation用Estimator Class

estimate(operators, states)[source]#

operatorsとstatesの組み合わせに対して期待値を計算する operatorsまたはstatesのどちらかが1つの場合、もう一方の数に合わせて繰り返す もしくは、両方の数が同じ場合、1対1で対応させる それ以外の場合、ValueErrorを投げる

Parameters:
  • operators – 期待値を計算する演算子のリスト

  • states – 期待値を計算する状態のリスト

Returns:

operatorsとstatesの組み合わせに対する期待値のリスト

scikit_quri.backend.sim_gradient_estimator module#

class scikit_quri.backend.sim_gradient_estimator.SimGradientEstimator(method='parameter_shift', delta=1e-05)[source]#

Bases: BaseGradientEstimator

quri-parts-qulacsを用いて勾配を計算するSimulation用Gradient Estimator Class

Parameters:
  • method (Literal['numerical', 'parameter_shift']) – 勾配計算に用いる手法。 “numerical”または”parameter_shift”を指定可能。デフォルトは”parameter_shift”

  • delta (float) – 数値微分を行う際の差分。methodが”numerical”の場合にのみ使用される。デフォルトは1e-5

Raises:

ValueError – 不正なmethod名が指定された場合に発生

estimate_gradient(operators, state, params)[source]#

operatorsとstatesの組み合わせに対して勾配を計算する operatorsまたはstatesのどちらかが1つの場合、もう一方の数に合わせて繰り返す もしくは、両方の数が同じ場合、1対1で対応させる それ以外の場合、ValueErrorを投げる

Parameters:
  • operators (Union[Operator, PauliLabel]) – 勾配を計算する演算子のリスト

  • states – 勾配を計算する状態のリスト

  • params (Sequence[float]) – 勾配を計算するパラメータのリスト

  • state (_ParametricStateT) –

Returns:

operatorsとstatesの組み合わせに対する勾配のリスト

Return type:

Estimates[complex]

estimate_learning_param_gradient(operators, circuit, params)[source]#

学習パラメータに対する勾配を計算する

Parameters:
Return type:

Sequence[complex]

Module contents#

class scikit_quri.backend.BaseEstimator[source]#

Bases: object

Estimatorを実行する際の基底クラス estimateメソッドに対するinterfaceを定義

abstract estimate(operators, states)[source]#

operatorsとstatesの組み合わせに対して期待値を計算する operatorsまたはstatesのどちらかが1つの場合、もう一方の数に合わせて繰り返す もしくは、両方の数が同じ場合、1対1で対応させる それ以外の場合、ValueErrorを投げる

Parameters:
Returns:

operatorsとstatesの組み合わせに対する期待値のリスト

Return type:

Iterable[Estimate[complex]]

class scikit_quri.backend.OqtopusEstimator(device_id, shots=1000, config=None)[source]#

Bases: BaseEstimator

Estimator class that computes expectation values on real quantum hardware via quri-parts-oqtopus. Requires an OQTOPUS configuration file at ~/.oqtopus. See: https://quri-parts-oqtopus.readthedocs.io/en/stable/usage/getting_started/#prepare-oqtopus-configuration-file

Parameters:
  • device_id (str) – ID of the device to run on.

  • shots (int) – Number of shots per circuit execution. Defaults to 1000.

  • config (Optional[OqtopusConfig]) – OQTOPUS configuration. Defaults to None.

estimate(operators, states)[source]#

Compute expectation values for combinations of operators and states. If either operators or states contains a single element, it is broadcast to match the length of the other. If both contain multiple elements, they must have the same length and are paired one-to-one.

Parameters:
  • operators – List of operators for which to compute expectation values.

  • states – List of quantum states.

Returns:

List of expectation values for each (operator, state) pair.

Raises:
  • ValueError – If operators or states is empty, or if both have multiple elements with mismatched lengths.

  • BackendError – If execution on OQTOPUS fails.

class scikit_quri.backend.SimEstimator[source]#

Bases: BaseEstimator

quri-parts-qulacsを用いて期待値を計算するSimulation用Estimator Class

estimate(operators, states)[source]#

operatorsとstatesの組み合わせに対して期待値を計算する operatorsまたはstatesのどちらかが1つの場合、もう一方の数に合わせて繰り返す もしくは、両方の数が同じ場合、1対1で対応させる それ以外の場合、ValueErrorを投げる

Parameters:
  • operators – 期待値を計算する演算子のリスト

  • states – 期待値を計算する状態のリスト

Returns:

operatorsとstatesの組み合わせに対する期待値のリスト

scikit_quri.backend.create_oqtopus_sampler(device_id, config=None)[source]#

Oqtopus用のSamplerを生成する関数 quri-partsのSamplerとして動作

Returns:

Oqtopus用のSampler

Return type:

Sampler

Parameters:
class scikit_quri.backend.SimGradientEstimator(method='parameter_shift', delta=1e-05)[source]#

Bases: BaseGradientEstimator

quri-parts-qulacsを用いて勾配を計算するSimulation用Gradient Estimator Class

Parameters:
  • method (Literal['numerical', 'parameter_shift']) – 勾配計算に用いる手法。 “numerical”または”parameter_shift”を指定可能。デフォルトは”parameter_shift”

  • delta (float) – 数値微分を行う際の差分。methodが”numerical”の場合にのみ使用される。デフォルトは1e-5

Raises:

ValueError – 不正なmethod名が指定された場合に発生

estimate_gradient(operators, state, params)[source]#

operatorsとstatesの組み合わせに対して勾配を計算する operatorsまたはstatesのどちらかが1つの場合、もう一方の数に合わせて繰り返す もしくは、両方の数が同じ場合、1対1で対応させる それ以外の場合、ValueErrorを投げる

Parameters:
  • operators (Union[Operator, PauliLabel]) – 勾配を計算する演算子のリスト

  • states – 勾配を計算する状態のリスト

  • params (Sequence[float]) – 勾配を計算するパラメータのリスト

  • state (_ParametricStateT) –

Returns:

operatorsとstatesの組み合わせに対する勾配のリスト

Return type:

Estimates[complex]

estimate_learning_param_gradient(operators, circuit, params)[source]#

学習パラメータに対する勾配を計算する

Parameters:
Return type:

Sequence[complex]

class scikit_quri.backend.OqtopusGradientEstimator[source]#

Bases: BaseGradientEstimator

Oqtopusを用いて勾配を計算するGradient Estimator Class。

OqtopusEstimatorを内部で使用し、数値微分により勾配を計算する。

estimate_gradient(operators, state, params)[source]#

全パラメータに対する勾配を計算する。

Note

現在未実装。

Raises:

NotImplementedError – このメソッドは未実装。

estimate_learning_param_gradient(operators, circuit, params)[source]#

学習パラメータに対する勾配を計算する。

入力パラメータは固定し、学習パラメータのみに対する勾配を計算する。

Parameters:
  • operators – 期待値を計算する演算子。

  • circuit – 学習回路。

  • params – 全パラメータ(入力+学習)の値。

Returns:

各学習パラメータに対する勾配のシーケンス。

Return type:

Sequence[complex]