qiskit.circuit.library.pauli_feature_map
qiskit.circuit.library.pauli_feature_map(feature_dimension, reps=2, entanglement='full', alpha=2.0, paulis=None, data_map_func=None, parameter_prefix='x', insert_barriers=False, name='PauliFeatureMap')
パウリ拡大回路。
パウリ展開回路は、入力データ 、 を feature_dimension、次のように変換するデータ符号化回路である
ここで、 は、特徴マップの接続を記述する量子ビットインデックスの集合であり、 は、これらのインデックス集合をすべて含む集合であり、 は、特徴マップの接続を記述する量子ビットインデックスの集合である。デフォルトでは、データマッピング は
可能な接続は、 entanglement と paulis の引数で設定できる。 例えば、1量子ビットの 回転と、すべての量子ビットペア間の2量子ビット 相互作用については、次のように設定できる:
circuit = pauli_feature_map(..., paulis=["Z", "YY"], entanglement="full")という形のブロックを生成する
┌───┐┌─────────────┐┌──────────┐ ┌───────────┐
┤ H ├┤ P(2.0*x[0]) ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
├───┤├─────────────┤├──────────┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───────────┤
┤ H ├┤ P(2.0*x[1]) ├┤ RX(pi/2) ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ RX(-pi/2) ├
└───┘└─────────────┘└──────────┘└───┘└────────────────────────────────┘└───┘└───────────┘回路はこの変換を reps 。
を参照されたい。 z_feature_map() を、1量子ビットPauli- 回転の場合は zz_feature_map() を参照されたい。
パラメーター
- feature_dimension (int) – 回路内の量子ビット数。
- reps (int) – 進化レイヤーが繰り返される回数。
- entanglement (str |Mapping[int, Sequence[Sequence[int]]] | Callable[[int], str |Mapping[int, Sequence[Sequence[int]]]]) – エンタングルメント構造を指定します。 文字列(
'full','linear','reverse_linear','circular'または'sca')であるか、キーが量子ビットの数を表し、値が互いに量子もつれ状態にある量子ビットのインデックスを指定する整数のペアのリストである辞書であることができます。例えば:{1: [(0,), (2,)], 2: [(0,1), (2,0)]}または、特定の反復における量子もつれ状態をCallable[[int], Union[str | Dict[...]]]返すための であることもあります。 - alpha (float) – パウリ回転因子。パウリ回転に掛けられる。
- paulis (list[str] | None) – 今後使用されるパウリ演算子の文字列一覧。 指定がない場合は、
['Z', 'ZZ']が使用されます。 - data_map_func (Callable[[Parameter], ParameterExpression] | None) – デフォルトのマッピングを上書きするために指定できる、
xデータ用のマッピング関数。 - parameter_prefix (str) – デフォルト引数が生成される場合に使用される接頭辞。
- insert_barriers (bool) – その場合
True、進化指令とアダマール層の間に障壁が挿入される。 - name (str) – 回路の名前。
戻り値
パウリ特徴写像を実装する量子回路。
戻りの型
例
>>> prep = pauli_feature_map(2, reps=1, paulis=["ZZ"])
>>> print(prep)
┌───┐
q_0: ┤ H ├──■──────────────────────────────────────■──
├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐
q_1: ┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
└───┘└───┘└────────────────────────────────┘└───┘>>> prep = pauli_feature_map(2, reps=1, paulis=["Z", "XX"])
>>> print(prep)
┌───┐┌─────────────┐┌───┐ ┌───┐
q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ H ├──■──────────────────────────────────────■──┤ H ├
├───┤├─────────────┤├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───┤
q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ H ├
└───┘└─────────────┘└───┘└───┘└────────────────────────────────┘└───┘└───┘>>> prep = pauli_feature_map(2, reps=1, paulis=["ZY"])
>>> print(prep)
┌───┐┌──────────┐ ┌───────────┐
q_0: ┤ H ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
├───┤└──────────┘┌─┴─┐┌────────────────────────────────┐┌─┴─┐└───────────┘
q_1: ┤ H ├────────────┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├─────────────
└───┘ └───┘└────────────────────────────────┘└───┘>>> from qiskit.circuit.library import efficient_su2
>>> prep = pauli_feature_map(3, reps=3, paulis=["Z", "YY", "ZXZ"])
>>> wavefunction = efficient_su2(3)
>>> classifier = prep.compose(wavefunction)
>>> classifier.num_parameters
27
>>> classifier.count_ops()
OrderedDict([('cx', 39), ('rx', 36), ('u1', 21), ('h', 15), ('ry', 12), ('rz', 12)])参照資料:
[1] ハブリチェックら 量子拡張特徴空間を用いた教師あり学習, Nature 567, 209-212 (2019 ).
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。