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 인수를 사용하여 가능한 연결을 설정할 수 있습니다. 예를 들어, 모든 큐비트 쌍 간의 단일 큐비트 회전과 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() 단일 큐비트 Pauli- 회전의 경우, 그리고 zz_feature_map() 단일 큐비트 및 2큐비트 Pauli- 회전을 참조하세요.
매개변수
- 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] Havlicek et al. 양자 강화 특징 공간을 사용한 지도 학습, Nature 567, 209-212 (2019).
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.