qiskit.circuit.library.z_feature_map
qiskit.circuit.library.z_feature_map(feature_dimension, reps=2, entanglement='full', alpha=2.0, data_map_func=None, parameter_prefix='x', insert_barriers=False, name='ZFeatureMap')
Le circuit de Pauli Z-évolution du premier ordre.
Sur 3 qubits et avec 2 répétitions, le circuit est représenté par :
┌───┐┌─────────────┐┌───┐┌─────────────┐
┤ H ├┤ P(2.0*x[0]) ├┤ H ├┤ P(2.0*x[0]) ├
├───┤├─────────────┤├───┤├─────────────┤
┤ H ├┤ U(2.0*x[1]) ├┤ H ├┤ P(2.0*x[1]) ├
├───┤├─────────────┤├───┤├─────────────┤
┤ H ├┤ P(2.0*x[2]) ├┤ H ├┤ P(2.0*x[2]) ├
└───┘└─────────────┘└───┘└─────────────┘Il s'agit d'une sous-classe de PauliFeatureMap où les chaînes de Pauli sont fixées à ["Z".] Par conséquent, l'expansion de premier ordre sera un circuit sans portes enchevêtrées.
Paramètres
- feature_dimension (int) – Nombre de qubits dans le circuit.
- reps (int) – Le nombre de fois où les couches d'évolution sont répétées.
- entanglement (str |Sequence[Sequence[int]] | Callable[[int], str |Sequence[Sequence[int]]]) – Définit la structure d'intrication. Il peut s'agir d'une chaîne de caractères (
'full','linear','reverse_linear','circular'ou'sca'), d'une liste de tuples d'entiers ou d'une fonction renvoyant ces types à chaque itération. - alpha (float) – Le facteur de rotation de Pauli, qui se multiplie par les rotations de Pauli.
- data_map_func (Callable[[Parameter], ParameterExpression] | None) – Une fonction de mappage pour les données
xqui peut être fournie afin de remplacer le mappage par défaut. - parameter_prefix (str) – Préfixe utilisé lorsque des paramètres par défaut sont générés.
- insert_barriers (bool) – Dans ce cas
True, des barrières sont insérées entre les instructions d'évolution et les couches de Hadamard. - name (str) – Le nom du circuit.
Retours
Un circuit quantique mettant en œuvre la carte de caractéristiques Z.
Type de retour
Exemples
>>> from qiskit.circuit.library import z_feature_map
>>> prep = z_feature_map(3, reps=3, insert_barriers=True)
>>> print(prep)
┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐
q_0: ┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├
├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
q_1: ┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├
├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
q_2: ┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├
└───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘>>> data_map = lambda x: x[0]*x[0] + 1 # note: input is an array
>>> prep = z_feature_map(3, reps=1, data_map_func=data_map)
>>> print(prep)
┌───┐┌──────────────────────┐
q_0: ┤ H ├┤ P(2.0*x[0]**2 + 2.0) ├
├───┤├──────────────────────┤
q_1: ┤ H ├┤ P(2.0*x[1]**2 + 2.0) ├
├───┤├──────────────────────┤
q_2: ┤ H ├┤ P(2.0*x[2]**2 + 2.0) ├
└───┘└──────────────────────┘>>> from qiskit.circuit.library import n_local
>>> circuit = n_local(3, "ry", "cz", reps=1).decompose()
>>> classifier = z_feature_map(3, reps=1)
>>> classifier.append(circuit, list(range(classifier.num_qubits)))
>>> print(classifier)
┌───┐┌─────────────┐┌──────────┐ ┌──────────┐
q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ RY(θ[0]) ├─■──■─┤ RY(θ[3]) ├────────────
├───┤├─────────────┤├──────────┤ │ │ └──────────┘┌──────────┐
q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ RY(θ[1]) ├─■──┼──────■──────┤ RY(θ[4]) ├
├───┤├─────────────┤├──────────┤ │ │ ├──────────┤
q_2: ┤ H ├┤ P(2.0*x[2]) ├┤ RY(θ[2]) ├────■──────■──────┤ RY(θ[5]) ├
└───┘└─────────────┘└──────────┘ └──────────┘Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.