Parametric programs
Qadence base Parameter
type is a subtype of sympy.Symbol
. There are three kinds of parameter subtypes used:
Fixed Parameter : A constant with a fixed, non-trainable value (e.g. \(\dfrac{\pi}{2}\) ).
Variational Parameter : A trainable parameter which can be be optimized.
Feature Parameter : A non-trainable parameter which can be used to encode classical data into a quantum state.
Fixed Parameters
To pass a fixed parameter to a gate (or any parametrizable block), one can simply use either Python numeric types or wrapped in
a torch.Tensor
.
from torch import pi
from qadence import RX , run
# Let's use a torch type.
block = RX ( 0 , pi )
wf = run ( block )
# Let's pass a simple float.
block = RX ( 0 , 1. )
wf = run ( block )
w f = tens or( [[ 6.1232e-17+0. j , 0.0000e+00-1. j ]] )
w f = tens or( [[ 0.8776+0.0000 j , 0.0000-0.4794 j ]] )
Variational Parameters
To parametrize a block by an angle theta
, either a Python string
or an instance of VariationalParameter
can be passed instead of a numeric type to the gate constructor:
from qadence import RX , run , VariationalParameter
block = RX ( 0 , "theta" )
# This is equivalent to:
block = RX ( 0 , VariationalParameter ( "theta" ))
wf = run ( block )
w f = tens or( [[ 0.9868+0.0000 j , 0.0000-0.1621 j ]] )
In the first case in the above example, theta
is automatically inferred as a VariationalParameter
(i.e. trainable). It is initialized to a random value for the purposes of execution. In the context of a QuantumModel
, there is no need to pass a value for theta
to the run
method since it is stored within the underlying model parameter dictionary.
Feature Parameters
FeatureParameter
types (i.e. inputs), always need to be provided with a value or a batch of values as a dictionary:
from torch import tensor
from qadence import RX , run , FeatureParameter
block = RX ( 0 , FeatureParameter ( "phi" ))
wf = run ( block , values = { "phi" : tensor ([ 1. , 2. ])})
w f = tens or( [[ 0.8776+0.0000 j , 0.0000-0.4794 j ],
[ 0.5403+0.0000 j , 0.0000-0.8415 j ]] )
Now, run
returns a batch of states, one for every provided angle which coincides with the value of the particular FeatureParameter
.
Multiparameter Expressions
However, an angle can itself be an expression Parameter
types of any kind.
As such, any sympy expression expr: sympy.Basic
consisting of a combination of free symbols (i.e. sympy
types) and Qadence Parameter
can
be passed to a block, including trigonometric functions.
from torch import tensor
from qadence import RX , Parameter , run , FeatureParameter
from sympy import sin
theta , phi = Parameter ( "theta" ), FeatureParameter ( "phi" )
block = RX ( 0 , sin ( theta + phi ))
# Remember, to run the block, only FeatureParameter values have to be provided:
values = { "phi" : tensor ([ 1.0 , 2.0 ])}
wf = run ( block , values = values )
w f = tens or( [[ 0.8778+0.0000 j , 0.0000-0.4791 j ],
[ 0.9593+0.0000 j , 0.0000-0.2825 j ]] )
Parameters Redundancy
Parameters are uniquely defined by their name and redundancy is allowed in composite blocks to
assign the same value to different blocks.
import torch
from qadence import RX , RY , run , chain , kron
block = chain (
kron ( RX ( 0 , "phi" ), RY ( 1 , "theta" )),
kron ( RX ( 0 , "phi" ), RY ( 1 , "theta" )),
)
wf = run ( block ) # Same random initialization for all instances of phi and theta.
w f = tens or( [[ 0.5086+0.0000 j , 0.6844+0.0000 j , 0.0000-0.3116 j , 0.0000-0.4194 j ]] )
Parametrized Circuits
Now, let's have a look at the construction of a variational ansatz which composes FeatureParameter
and VariationalParameter
types:
import sympy
from qadence import RX , RY , RZ , CNOT , Z , run , chain , kron , FeatureParameter , VariationalParameter
phi = FeatureParameter ( "phi" )
theta = VariationalParameter ( "theta" )
block = chain (
kron (
RX ( 0 , phi / theta ),
RY ( 1 , theta * 2 ),
RZ ( 2 , sympy . cos ( phi )),
),
kron (
RX ( 0 , phi ),
RY ( 1 , theta ),
RZ ( 2 , phi ),
),
kron (
RX ( 0 , phi ),
RY ( 1 , theta ),
RZ ( 2 , phi ),
),
kron (
RX ( 0 , phi + theta ),
RY ( 1 , theta ** 2 ),
RZ ( 2 , sympy . cos ( phi )),
),
chain ( CNOT ( 0 , 1 ), CNOT ( 1 , 2 ))
)
block . tag = "Rotations"
obs = 2 * kron ( * map ( Z , range ( 3 )))
block = chain ( block , obs )
cluster_a0fd417cba544b04b902d91320d4c863
[* 2]
cluster_77393da18f144dec9c22b0edeecbcff1
Rotations
122788c6e55445ae8dd135ff16eda32b
0
d80c7404d9a44357952725c735a07a38
RX(phi/theta)
122788c6e55445ae8dd135ff16eda32b--d80c7404d9a44357952725c735a07a38
b3a525258c714c908c27473320ba6d07
1
3bc45c5fd0594b6d8587236c6071ba5b
RX(phi)
d80c7404d9a44357952725c735a07a38--3bc45c5fd0594b6d8587236c6071ba5b
06256ce6171a4c88a7fff2125fb7ba0b
RX(phi)
3bc45c5fd0594b6d8587236c6071ba5b--06256ce6171a4c88a7fff2125fb7ba0b
f09eed1f089b4c17b46ae173aa283a52
RX(phi + theta)
06256ce6171a4c88a7fff2125fb7ba0b--f09eed1f089b4c17b46ae173aa283a52
bfa094838e844d929b7fc17944b52529
f09eed1f089b4c17b46ae173aa283a52--bfa094838e844d929b7fc17944b52529
af07b0c681ab4f3c928e7e128233098e
bfa094838e844d929b7fc17944b52529--af07b0c681ab4f3c928e7e128233098e
7ca79da0944a46cd8792d8116e4dd9b3
Z
af07b0c681ab4f3c928e7e128233098e--7ca79da0944a46cd8792d8116e4dd9b3
b6ed6ecfbf9a44ca85933f290a9b581c
7ca79da0944a46cd8792d8116e4dd9b3--b6ed6ecfbf9a44ca85933f290a9b581c
b5ec03ca821e443f8afea57303a2accc
0f2a9d24aaa749cbbcd9da452fafb277
RY(2*theta)
b3a525258c714c908c27473320ba6d07--0f2a9d24aaa749cbbcd9da452fafb277
79de5c1e599d45818bd8d1d483d9ffe8
2
2cf4dfddc5ad4556ae96c00f8a4e08e4
RY(theta)
0f2a9d24aaa749cbbcd9da452fafb277--2cf4dfddc5ad4556ae96c00f8a4e08e4
3627fa4d7ad64c8196a0ca9000218d8b
RY(theta)
2cf4dfddc5ad4556ae96c00f8a4e08e4--3627fa4d7ad64c8196a0ca9000218d8b
7006e0874ce94b9388ebc8fbba34e018
RY(theta**2)
3627fa4d7ad64c8196a0ca9000218d8b--7006e0874ce94b9388ebc8fbba34e018
01fa4d4637fb4de9981566ee8ca2f704
X
7006e0874ce94b9388ebc8fbba34e018--01fa4d4637fb4de9981566ee8ca2f704
01fa4d4637fb4de9981566ee8ca2f704--bfa094838e844d929b7fc17944b52529
e6c65b894dbe4393b3dd39a17e2db513
01fa4d4637fb4de9981566ee8ca2f704--e6c65b894dbe4393b3dd39a17e2db513
3d1ff771ff034564bab376e7e3ad8f64
Z
e6c65b894dbe4393b3dd39a17e2db513--3d1ff771ff034564bab376e7e3ad8f64
3d1ff771ff034564bab376e7e3ad8f64--b5ec03ca821e443f8afea57303a2accc
1b9e3d0c07bf44f4a6446099b08befc5
e8210ba3b34a430e95814baf4de91229
RZ(cos(phi))
79de5c1e599d45818bd8d1d483d9ffe8--e8210ba3b34a430e95814baf4de91229
dd3d97c4da96471eb965ac1511a53db3
RZ(phi)
e8210ba3b34a430e95814baf4de91229--dd3d97c4da96471eb965ac1511a53db3
cd52fe6e3dba471ea726b67fba651a00
RZ(phi)
dd3d97c4da96471eb965ac1511a53db3--cd52fe6e3dba471ea726b67fba651a00
f97ecb93616c4ee49996dfd9c5b7f572
RZ(cos(phi))
cd52fe6e3dba471ea726b67fba651a00--f97ecb93616c4ee49996dfd9c5b7f572
5aa7f4217ad44b06954117de2bee1306
f97ecb93616c4ee49996dfd9c5b7f572--5aa7f4217ad44b06954117de2bee1306
33683ab3bb7841beabe1dfe037c0c3c2
X
5aa7f4217ad44b06954117de2bee1306--33683ab3bb7841beabe1dfe037c0c3c2
33683ab3bb7841beabe1dfe037c0c3c2--e6c65b894dbe4393b3dd39a17e2db513
050e6ac578164d7580100cbd000e0253
Z
33683ab3bb7841beabe1dfe037c0c3c2--050e6ac578164d7580100cbd000e0253
050e6ac578164d7580100cbd000e0253--1b9e3d0c07bf44f4a6446099b08befc5
Please note the different colors for the parametrization with different types. The default palette assigns light blue for VariationalParameter
, light green for FeatureParameter
and shaded red for observables.
Parametrized QuantumModels
As a quick reminder: FeatureParameter
are used for data input and data encoding into a quantum state.
VariationalParameter
are trainable parameters in a variational ansatz. When used within a QuantumModel
, an abstract quantum circuit is made differentiable with respect to both variational and feature
parameters which are uniquely identified by their name.
from qadence import FeatureParameter , Parameter , VariationalParameter
# Feature parameters are non-trainable parameters.
# Their primary use is input data encoding.
fp = FeatureParameter ( "x" )
assert fp == Parameter ( "x" , trainable = False )
# Variational parameters are trainable parameters.
# Their primary use is for optimization.
vp = VariationalParameter ( "y" )
assert vp == Parameter ( "y" , trainable = True )
Let's construct a parametric quantum circuit.
from qadence import QuantumCircuit , RX , RY , chain , kron
theta = VariationalParameter ( "theta" )
phi = FeatureParameter ( "phi" )
block = chain (
kron ( RX ( 0 , theta ), RY ( 1 , theta )),
kron ( RX ( 0 , phi ), RY ( 1 , phi )),
)
circuit = QuantumCircuit ( 2 , block )
unique_params = circuit . unique_parameters
u n ique_params = [ t he ta , phi ]
In the circuit above, four parameters are defined but only two unique names. Therefore, there will be only one
variational parameter to be optimized.
The QuantumModel
class also provides convenience methods to manipulate parameters.
from qadence import QuantumModel , BackendName , DiffMode
model = QuantumModel ( circuit , backend = BackendName . PYQTORCH , diff_mode = DiffMode . AD )
num_vparams = model . num_vparams
vparams_values = model . vparams
nu m_vparams = 1
vparams_values = OrderedDic t ( [ (' t he ta ' , tens or( [ 0.6171 ] )) ] )
Only provide feature parameter values to the quantum model
In order to run
the variational circuit only feature parameter values have to be provided.
Variational parameters are stored in the model itself. If multiple feature parameters are present,
values must be provided in batches of same length.
import torch
values = { "phi" : torch . rand ( 3 )} # theta does not appear here
wf = model . run ( values )
w f = tens or( [[ 0.5703+0.0000 j , 0.4950+0.0000 j , 0.0000-0.4950 j , 0.0000-0.4297 j ],
[ 0.8421+0.0000 j , 0.3647+0.0000 j , 0.0000-0.3647 j , 0.0000-0.1579 j ],
[ 0.8410+0.0000 j , 0.3656+0.0000 j , 0.0000-0.3656 j , 0.0000-0.1590 j ]],
grad_ fn =<TBackward 0 >)
Standard constructors
The unique parameter identification is relevant when using built-in Qadence block
constructors in the qadence.constructors
module such as feature maps and hardware
efficient ansatze (HEA).
from qadence import QuantumCircuit , hea
n_qubits = 4
depth = 2
hea1 = hea ( n_qubits = n_qubits , depth = depth )
circuit = QuantumCircuit ( n_qubits , hea1 )
num_unique_parameters = circuit . num_unique_parameters
U n ique parame ters wi t h a si n gle HEA : 24
40064fe83c614848ba879b67014ef65d
0
de8cf19455bf40ac968dea7676ebbf61
RX(theta₀)
40064fe83c614848ba879b67014ef65d--de8cf19455bf40ac968dea7676ebbf61
ef7383dd20b245b0ae3faff5ce766ae5
1
04f986bad5fd46959f4fdb744141f839
RY(theta₄)
de8cf19455bf40ac968dea7676ebbf61--04f986bad5fd46959f4fdb744141f839
a38695307f604dc9ad80a0c0e2fd170e
RX(theta₈)
04f986bad5fd46959f4fdb744141f839--a38695307f604dc9ad80a0c0e2fd170e
2dd7d78d790b48ac8b80cec718becbae
a38695307f604dc9ad80a0c0e2fd170e--2dd7d78d790b48ac8b80cec718becbae
2f9c9817f160477cbd80f852a2a2ec4c
2dd7d78d790b48ac8b80cec718becbae--2f9c9817f160477cbd80f852a2a2ec4c
ae791bc92e134edfb96bcd9449bdee2f
RX(theta₁₂)
2f9c9817f160477cbd80f852a2a2ec4c--ae791bc92e134edfb96bcd9449bdee2f
40e4baa9eef54f7187035d36f7556d49
RY(theta₁₆)
ae791bc92e134edfb96bcd9449bdee2f--40e4baa9eef54f7187035d36f7556d49
6108757be20c48d89cb96d4046344043
RX(theta₂₀)
40e4baa9eef54f7187035d36f7556d49--6108757be20c48d89cb96d4046344043
dd4a5c8a287f4d97840675292c68dbcf
6108757be20c48d89cb96d4046344043--dd4a5c8a287f4d97840675292c68dbcf
fc5e8f78f78f4b679816a7b49c194fcf
dd4a5c8a287f4d97840675292c68dbcf--fc5e8f78f78f4b679816a7b49c194fcf
180a9273d083488d92b5404ad20a0a80
fc5e8f78f78f4b679816a7b49c194fcf--180a9273d083488d92b5404ad20a0a80
37cbc912d33341f4aa61ee2838e7ada6
a322c9cb1b7149029a7d1d2adb039aa3
RX(theta₁)
ef7383dd20b245b0ae3faff5ce766ae5--a322c9cb1b7149029a7d1d2adb039aa3
5f0db1d6ac294bfba61d35e4668ebedb
2
8588c84eb9894503a2b132a5c0a40e83
RY(theta₅)
a322c9cb1b7149029a7d1d2adb039aa3--8588c84eb9894503a2b132a5c0a40e83
cc5790d03b134030a723f8de5872a47d
RX(theta₉)
8588c84eb9894503a2b132a5c0a40e83--cc5790d03b134030a723f8de5872a47d
f462c4b84665475490523cc339bdd4d8
X
cc5790d03b134030a723f8de5872a47d--f462c4b84665475490523cc339bdd4d8
f462c4b84665475490523cc339bdd4d8--2dd7d78d790b48ac8b80cec718becbae
e85afaf65adf4d8e827a207903ae487d
f462c4b84665475490523cc339bdd4d8--e85afaf65adf4d8e827a207903ae487d
eaf08ebc6a1d4242943bcc5e79962d7f
RX(theta₁₃)
e85afaf65adf4d8e827a207903ae487d--eaf08ebc6a1d4242943bcc5e79962d7f
e0ee544ca668470e92503d027599c510
RY(theta₁₇)
eaf08ebc6a1d4242943bcc5e79962d7f--e0ee544ca668470e92503d027599c510
4900efdc64324dfcbdd2adc4c8510863
RX(theta₂₁)
e0ee544ca668470e92503d027599c510--4900efdc64324dfcbdd2adc4c8510863
335774dd13624a998027b90297220be6
X
4900efdc64324dfcbdd2adc4c8510863--335774dd13624a998027b90297220be6
335774dd13624a998027b90297220be6--dd4a5c8a287f4d97840675292c68dbcf
5ba4e5de261849e9aec2f3cbdb74b7dc
335774dd13624a998027b90297220be6--5ba4e5de261849e9aec2f3cbdb74b7dc
5ba4e5de261849e9aec2f3cbdb74b7dc--37cbc912d33341f4aa61ee2838e7ada6
c330d4b706fd48a3ac0fb70f3de9309b
5800eaf8cca94079b097e06ab4d08710
RX(theta₂)
5f0db1d6ac294bfba61d35e4668ebedb--5800eaf8cca94079b097e06ab4d08710
dd39536b4dfa4c14a8f916a585e87347
3
e16ebd402e1a4e1daa382e35fb4bf490
RY(theta₆)
5800eaf8cca94079b097e06ab4d08710--e16ebd402e1a4e1daa382e35fb4bf490
7f0fec33dbc74a3e90214525450a1a13
RX(theta₁₀)
e16ebd402e1a4e1daa382e35fb4bf490--7f0fec33dbc74a3e90214525450a1a13
2383f370bd4c460e805a0f15d3e40ddf
7f0fec33dbc74a3e90214525450a1a13--2383f370bd4c460e805a0f15d3e40ddf
2ca3da113e754b999e6a5757152fc0e1
X
2383f370bd4c460e805a0f15d3e40ddf--2ca3da113e754b999e6a5757152fc0e1
2ca3da113e754b999e6a5757152fc0e1--e85afaf65adf4d8e827a207903ae487d
8e9a3a772d01439980eca4a3e3d50c9e
RX(theta₁₄)
2ca3da113e754b999e6a5757152fc0e1--8e9a3a772d01439980eca4a3e3d50c9e
f0f01d107b3243e18511339f00d52f77
RY(theta₁₈)
8e9a3a772d01439980eca4a3e3d50c9e--f0f01d107b3243e18511339f00d52f77
15e119da84844057b0c585fc4008f44a
RX(theta₂₂)
f0f01d107b3243e18511339f00d52f77--15e119da84844057b0c585fc4008f44a
36e622588075437da361c18e4e4049be
15e119da84844057b0c585fc4008f44a--36e622588075437da361c18e4e4049be
dbbe301c642f444aa3d7887968c14619
X
36e622588075437da361c18e4e4049be--dbbe301c642f444aa3d7887968c14619
dbbe301c642f444aa3d7887968c14619--5ba4e5de261849e9aec2f3cbdb74b7dc
dbbe301c642f444aa3d7887968c14619--c330d4b706fd48a3ac0fb70f3de9309b
36016e5c60c241b8bd88c2c719eefd94
038d58ec013d47208e97c1447760d77a
RX(theta₃)
dd39536b4dfa4c14a8f916a585e87347--038d58ec013d47208e97c1447760d77a
f9e98a8b4b0d40258ee1fba2e972ac81
RY(theta₇)
038d58ec013d47208e97c1447760d77a--f9e98a8b4b0d40258ee1fba2e972ac81
27ec8aa42ef14a1693fa42f854f8f9d8
RX(theta₁₁)
f9e98a8b4b0d40258ee1fba2e972ac81--27ec8aa42ef14a1693fa42f854f8f9d8
e02e7218674841c0bc94cdda646cbede
X
27ec8aa42ef14a1693fa42f854f8f9d8--e02e7218674841c0bc94cdda646cbede
e02e7218674841c0bc94cdda646cbede--2383f370bd4c460e805a0f15d3e40ddf
1ca887d7d0b845bfb2b3b6a5c06f96a6
e02e7218674841c0bc94cdda646cbede--1ca887d7d0b845bfb2b3b6a5c06f96a6
1998449c53624ca7b57d01d0e9e677ad
RX(theta₁₅)
1ca887d7d0b845bfb2b3b6a5c06f96a6--1998449c53624ca7b57d01d0e9e677ad
1ea1f4f6f8a24c2cb6f3fcc3723ae1c3
RY(theta₁₉)
1998449c53624ca7b57d01d0e9e677ad--1ea1f4f6f8a24c2cb6f3fcc3723ae1c3
9d526491d6794267b197ed60d8de97c8
RX(theta₂₃)
1ea1f4f6f8a24c2cb6f3fcc3723ae1c3--9d526491d6794267b197ed60d8de97c8
87259ebe915f4828ab37ea23749dbcde
X
9d526491d6794267b197ed60d8de97c8--87259ebe915f4828ab37ea23749dbcde
87259ebe915f4828ab37ea23749dbcde--36e622588075437da361c18e4e4049be
e4baeb05a30d4375b7cd855fc5723c19
87259ebe915f4828ab37ea23749dbcde--e4baeb05a30d4375b7cd855fc5723c19
e4baeb05a30d4375b7cd855fc5723c19--36016e5c60c241b8bd88c2c719eefd94
A new circuit can be created by adding another identical HEA. As expected, the number of unique parameters
is the same.
hea2 = hea ( n_qubits = n_qubits , depth = depth )
circuit = QuantumCircuit ( n_qubits , hea1 , hea2 )
num_unique_params_two_heas = circuit . num_unique_parameters
U n ique parame ters wi t h t wo s ta cked HEAs : 24
cluster_95153c2b861b46bda5be5cb55f930eef
HEA
cluster_49fb79a993b04b7484224bd6ead2d48c
HEA
3bc17c99ad864cf89e9d787df8689d61
0
5c645eec5ce34e0b8a3ced3985d6f36c
RX(theta₀)
3bc17c99ad864cf89e9d787df8689d61--5c645eec5ce34e0b8a3ced3985d6f36c
e6f91d17d3c541108b36b06a04e541b9
1
564d7ae9514d43df95d70678a6647d5f
RY(theta₄)
5c645eec5ce34e0b8a3ced3985d6f36c--564d7ae9514d43df95d70678a6647d5f
f68e955e0dab4944ba0ecea3ccdddde8
RX(theta₈)
564d7ae9514d43df95d70678a6647d5f--f68e955e0dab4944ba0ecea3ccdddde8
fcc03071e28f4326b45c0c1a13744028
f68e955e0dab4944ba0ecea3ccdddde8--fcc03071e28f4326b45c0c1a13744028
bf70afcb82b147dc8d14caad534fe94d
fcc03071e28f4326b45c0c1a13744028--bf70afcb82b147dc8d14caad534fe94d
93bbffb183714e388afa39b895728d4a
RX(theta₁₂)
bf70afcb82b147dc8d14caad534fe94d--93bbffb183714e388afa39b895728d4a
9f13e10da63648f098380ef7ee7eca36
RY(theta₁₆)
93bbffb183714e388afa39b895728d4a--9f13e10da63648f098380ef7ee7eca36
82d7254ea7894fad9537bc625215fcc8
RX(theta₂₀)
9f13e10da63648f098380ef7ee7eca36--82d7254ea7894fad9537bc625215fcc8
b3688aaf0ae145a4b756965894f3c3a3
82d7254ea7894fad9537bc625215fcc8--b3688aaf0ae145a4b756965894f3c3a3
386a1830cbec4a68a9afca3489736988
b3688aaf0ae145a4b756965894f3c3a3--386a1830cbec4a68a9afca3489736988
f1900cc85324406584fd54f8d68fd614
RX(theta₀)
386a1830cbec4a68a9afca3489736988--f1900cc85324406584fd54f8d68fd614
ba03607a1b76445bb948aec2e2667429
RY(theta₄)
f1900cc85324406584fd54f8d68fd614--ba03607a1b76445bb948aec2e2667429
317902a2d4dc40af8972ac0963256317
RX(theta₈)
ba03607a1b76445bb948aec2e2667429--317902a2d4dc40af8972ac0963256317
2dd7087cb3a1445ba505c419354e527e
317902a2d4dc40af8972ac0963256317--2dd7087cb3a1445ba505c419354e527e
9d2f573aee0643e0a3cd9d6282854121
2dd7087cb3a1445ba505c419354e527e--9d2f573aee0643e0a3cd9d6282854121
d4504706f8b249eca697acae6522fb51
RX(theta₁₂)
9d2f573aee0643e0a3cd9d6282854121--d4504706f8b249eca697acae6522fb51
e801b320eb9a41bc97549ab51a29059d
RY(theta₁₆)
d4504706f8b249eca697acae6522fb51--e801b320eb9a41bc97549ab51a29059d
b5ab997aba214bc6a0c4a5b25c2d0112
RX(theta₂₀)
e801b320eb9a41bc97549ab51a29059d--b5ab997aba214bc6a0c4a5b25c2d0112
a03f3873e7f34ae3816a24c7e0d9334c
b5ab997aba214bc6a0c4a5b25c2d0112--a03f3873e7f34ae3816a24c7e0d9334c
c3ed02400aec4c0cac7220bc94b0ea74
a03f3873e7f34ae3816a24c7e0d9334c--c3ed02400aec4c0cac7220bc94b0ea74
72a09ab10be845dd8c1ce72ae583f4f1
c3ed02400aec4c0cac7220bc94b0ea74--72a09ab10be845dd8c1ce72ae583f4f1
fb59098fe1d24bbfafa6cf86b96e16b2
596390c7c13b4f1aa144d9170f800bf2
RX(theta₁)
e6f91d17d3c541108b36b06a04e541b9--596390c7c13b4f1aa144d9170f800bf2
9a3299ec0b7b47eebf99c16c36d2185a
2
0ef87d98beef4b9eb7a2bd72333f99ba
RY(theta₅)
596390c7c13b4f1aa144d9170f800bf2--0ef87d98beef4b9eb7a2bd72333f99ba
63bb7a8c6f384d94a072ed07a2a9059b
RX(theta₉)
0ef87d98beef4b9eb7a2bd72333f99ba--63bb7a8c6f384d94a072ed07a2a9059b
6fd54082c6364c21927af3ef0716ded2
X
63bb7a8c6f384d94a072ed07a2a9059b--6fd54082c6364c21927af3ef0716ded2
6fd54082c6364c21927af3ef0716ded2--fcc03071e28f4326b45c0c1a13744028
3f50092da8544a9d95562505b27d27a5
6fd54082c6364c21927af3ef0716ded2--3f50092da8544a9d95562505b27d27a5
1cc93ff363914470b2da7dd6bb0ac28f
RX(theta₁₃)
3f50092da8544a9d95562505b27d27a5--1cc93ff363914470b2da7dd6bb0ac28f
c9b37f3b123248388b8339bca1bd9b3a
RY(theta₁₇)
1cc93ff363914470b2da7dd6bb0ac28f--c9b37f3b123248388b8339bca1bd9b3a
f2279dbd8aa74da4b19b5cab972dce20
RX(theta₂₁)
c9b37f3b123248388b8339bca1bd9b3a--f2279dbd8aa74da4b19b5cab972dce20
d6a1e2fc9dde4c0583dc2a1e6e14e293
X
f2279dbd8aa74da4b19b5cab972dce20--d6a1e2fc9dde4c0583dc2a1e6e14e293
d6a1e2fc9dde4c0583dc2a1e6e14e293--b3688aaf0ae145a4b756965894f3c3a3
6d460aacb57e409bbb6141280b28a829
d6a1e2fc9dde4c0583dc2a1e6e14e293--6d460aacb57e409bbb6141280b28a829
b1c7ec608102417b913bdc687a47a899
RX(theta₁)
6d460aacb57e409bbb6141280b28a829--b1c7ec608102417b913bdc687a47a899
fccd4d7041e44ad7aa80a5be1966ab4d
RY(theta₅)
b1c7ec608102417b913bdc687a47a899--fccd4d7041e44ad7aa80a5be1966ab4d
ac83ef20847549f68b20532af37d7019
RX(theta₉)
fccd4d7041e44ad7aa80a5be1966ab4d--ac83ef20847549f68b20532af37d7019
a5e4ce8f0648493695c993c7f4c1d332
X
ac83ef20847549f68b20532af37d7019--a5e4ce8f0648493695c993c7f4c1d332
a5e4ce8f0648493695c993c7f4c1d332--2dd7087cb3a1445ba505c419354e527e
f6cdab083b2b4748b7311e7ab680789c
a5e4ce8f0648493695c993c7f4c1d332--f6cdab083b2b4748b7311e7ab680789c
d99d40ccf1f5430aad7fdda5183cfae0
RX(theta₁₃)
f6cdab083b2b4748b7311e7ab680789c--d99d40ccf1f5430aad7fdda5183cfae0
991b3e5ae0524f60adcab2d251b2b36c
RY(theta₁₇)
d99d40ccf1f5430aad7fdda5183cfae0--991b3e5ae0524f60adcab2d251b2b36c
30f97845a1d24c9b84f42e38fb8d1097
RX(theta₂₁)
991b3e5ae0524f60adcab2d251b2b36c--30f97845a1d24c9b84f42e38fb8d1097
5a7cdd8695b14397be480669a2364e6b
X
30f97845a1d24c9b84f42e38fb8d1097--5a7cdd8695b14397be480669a2364e6b
5a7cdd8695b14397be480669a2364e6b--a03f3873e7f34ae3816a24c7e0d9334c
40311c199a0b4f1da834fe418759a589
5a7cdd8695b14397be480669a2364e6b--40311c199a0b4f1da834fe418759a589
40311c199a0b4f1da834fe418759a589--fb59098fe1d24bbfafa6cf86b96e16b2
9b31ed0d61f34b0e9b15f3aed3d4d085
f3f7563593ba412db77a1749f6111672
RX(theta₂)
9a3299ec0b7b47eebf99c16c36d2185a--f3f7563593ba412db77a1749f6111672
8ed889e811094e59a2d06844c8337514
3
d9acafbda4d94c3c89c817e011702e1a
RY(theta₆)
f3f7563593ba412db77a1749f6111672--d9acafbda4d94c3c89c817e011702e1a
7b5b9c2517d94072994bb95b81bf8a3d
RX(theta₁₀)
d9acafbda4d94c3c89c817e011702e1a--7b5b9c2517d94072994bb95b81bf8a3d
1c25bfc4b27b4c4ea6dd16df1d6146b8
7b5b9c2517d94072994bb95b81bf8a3d--1c25bfc4b27b4c4ea6dd16df1d6146b8
87f4f42c481246e2a00726878f2796d7
X
1c25bfc4b27b4c4ea6dd16df1d6146b8--87f4f42c481246e2a00726878f2796d7
87f4f42c481246e2a00726878f2796d7--3f50092da8544a9d95562505b27d27a5
3e1ab9773ddf4290bc50fed2f810a838
RX(theta₁₄)
87f4f42c481246e2a00726878f2796d7--3e1ab9773ddf4290bc50fed2f810a838
8cbcf0e0ba22447289df142726fef018
RY(theta₁₈)
3e1ab9773ddf4290bc50fed2f810a838--8cbcf0e0ba22447289df142726fef018
204838d99276461ba6816989cc1782dd
RX(theta₂₂)
8cbcf0e0ba22447289df142726fef018--204838d99276461ba6816989cc1782dd
2e65187255c34a9892ef3b86994eca7b
204838d99276461ba6816989cc1782dd--2e65187255c34a9892ef3b86994eca7b
2d9d19c8365948c89e0ce15870eba5a2
X
2e65187255c34a9892ef3b86994eca7b--2d9d19c8365948c89e0ce15870eba5a2
2d9d19c8365948c89e0ce15870eba5a2--6d460aacb57e409bbb6141280b28a829
ae1bb22ff61c4227b2b5b4d994617cce
RX(theta₂)
2d9d19c8365948c89e0ce15870eba5a2--ae1bb22ff61c4227b2b5b4d994617cce
86463c75c622457eb6e2043529530b7c
RY(theta₆)
ae1bb22ff61c4227b2b5b4d994617cce--86463c75c622457eb6e2043529530b7c
2e2d3a3e6aae40348553b9a9e9a93e45
RX(theta₁₀)
86463c75c622457eb6e2043529530b7c--2e2d3a3e6aae40348553b9a9e9a93e45
ce6e68b270094d9abded47b5dfbbd723
2e2d3a3e6aae40348553b9a9e9a93e45--ce6e68b270094d9abded47b5dfbbd723
b1e20e998c904d0893ad256291bc6ea0
X
ce6e68b270094d9abded47b5dfbbd723--b1e20e998c904d0893ad256291bc6ea0
b1e20e998c904d0893ad256291bc6ea0--f6cdab083b2b4748b7311e7ab680789c
97859ecce0ab47caa9c3a34f19de3154
RX(theta₁₄)
b1e20e998c904d0893ad256291bc6ea0--97859ecce0ab47caa9c3a34f19de3154
9651057832774f3f8f688fc099f63fde
RY(theta₁₈)
97859ecce0ab47caa9c3a34f19de3154--9651057832774f3f8f688fc099f63fde
66ab41a69a294bf8b2b7a1959c0eecd5
RX(theta₂₂)
9651057832774f3f8f688fc099f63fde--66ab41a69a294bf8b2b7a1959c0eecd5
b5d47d1ebf124e6d805300d51f65199a
66ab41a69a294bf8b2b7a1959c0eecd5--b5d47d1ebf124e6d805300d51f65199a
0f537a0751bc4f14b58e0c383670ac49
X
b5d47d1ebf124e6d805300d51f65199a--0f537a0751bc4f14b58e0c383670ac49
0f537a0751bc4f14b58e0c383670ac49--40311c199a0b4f1da834fe418759a589
0f537a0751bc4f14b58e0c383670ac49--9b31ed0d61f34b0e9b15f3aed3d4d085
1064786be802491891b68a851a14bd56
c9008882d717406a9b29e899ab621627
RX(theta₃)
8ed889e811094e59a2d06844c8337514--c9008882d717406a9b29e899ab621627
9ab2773eba2945488e6a35404bd692e0
RY(theta₇)
c9008882d717406a9b29e899ab621627--9ab2773eba2945488e6a35404bd692e0
d1be630f37714eec8ed4db123ae1b862
RX(theta₁₁)
9ab2773eba2945488e6a35404bd692e0--d1be630f37714eec8ed4db123ae1b862
75f7857c9a054429b7595ea19869ad0f
X
d1be630f37714eec8ed4db123ae1b862--75f7857c9a054429b7595ea19869ad0f
75f7857c9a054429b7595ea19869ad0f--1c25bfc4b27b4c4ea6dd16df1d6146b8
6b6ec2a0ac6e4cf4a7765df2780853e7
75f7857c9a054429b7595ea19869ad0f--6b6ec2a0ac6e4cf4a7765df2780853e7
2e41d5ed20a24e95ae16c41dafc4f01c
RX(theta₁₅)
6b6ec2a0ac6e4cf4a7765df2780853e7--2e41d5ed20a24e95ae16c41dafc4f01c
2e2d042ff9784ceba87766e25c298d31
RY(theta₁₉)
2e41d5ed20a24e95ae16c41dafc4f01c--2e2d042ff9784ceba87766e25c298d31
81f8f34353cc4428a419aed7a06f91ea
RX(theta₂₃)
2e2d042ff9784ceba87766e25c298d31--81f8f34353cc4428a419aed7a06f91ea
57e9a0269acd4f3ca091a15a416eb769
X
81f8f34353cc4428a419aed7a06f91ea--57e9a0269acd4f3ca091a15a416eb769
57e9a0269acd4f3ca091a15a416eb769--2e65187255c34a9892ef3b86994eca7b
23465dc3c9af4a6bbafbcb0afcc8f8f4
57e9a0269acd4f3ca091a15a416eb769--23465dc3c9af4a6bbafbcb0afcc8f8f4
d65ac21e13b34506af791f17f103d58f
RX(theta₃)
23465dc3c9af4a6bbafbcb0afcc8f8f4--d65ac21e13b34506af791f17f103d58f
7adf2a76f6ee49f89bfc38e04fc518f1
RY(theta₇)
d65ac21e13b34506af791f17f103d58f--7adf2a76f6ee49f89bfc38e04fc518f1
264d1e7500914710ad959ba664f8f011
RX(theta₁₁)
7adf2a76f6ee49f89bfc38e04fc518f1--264d1e7500914710ad959ba664f8f011
e660de90f0334cfab8346d35e0913b31
X
264d1e7500914710ad959ba664f8f011--e660de90f0334cfab8346d35e0913b31
e660de90f0334cfab8346d35e0913b31--ce6e68b270094d9abded47b5dfbbd723
00eaa7b2d7da4129b10570cd5220dff9
e660de90f0334cfab8346d35e0913b31--00eaa7b2d7da4129b10570cd5220dff9
6910a0660dc846939d501a80347eb498
RX(theta₁₅)
00eaa7b2d7da4129b10570cd5220dff9--6910a0660dc846939d501a80347eb498
7f6a8f218750482195da8c3cbf7e5a4e
RY(theta₁₉)
6910a0660dc846939d501a80347eb498--7f6a8f218750482195da8c3cbf7e5a4e
3a4676269b52459db0b64500e8e53442
RX(theta₂₃)
7f6a8f218750482195da8c3cbf7e5a4e--3a4676269b52459db0b64500e8e53442
db98c4087c4b465ba32c3f1228be35ea
X
3a4676269b52459db0b64500e8e53442--db98c4087c4b465ba32c3f1228be35ea
db98c4087c4b465ba32c3f1228be35ea--b5d47d1ebf124e6d805300d51f65199a
dec0fd548840490e9d399f39f14f1495
db98c4087c4b465ba32c3f1228be35ea--dec0fd548840490e9d399f39f14f1495
dec0fd548840490e9d399f39f14f1495--1064786be802491891b68a851a14bd56
Avoid non-unique names by prefixing
A parameter prefix for each HEA can be passed as follows:
hea1 = hea ( n_qubits = n_qubits , depth = depth , param_prefix = "p1" )
hea2 = hea ( n_qubits = n_qubits , depth = depth , param_prefix = "p2" )
circuit = QuantumCircuit ( n_qubits , hea1 , hea2 )
n_params_two_heas = circuit . num_unique_parameters
U n ique parame ters wi t h t wo s ta cked HEAs : 48
cluster_b31f9a59ad434d55bac7dc5a968e1f50
HEA
cluster_21f8553b18524861b83e7094526ff38e
HEA
7432f23cc8b14b3d82e91ed1e100a584
0
aab85de29a6d4d80b1c32299d06366c6
RX(p1₀)
7432f23cc8b14b3d82e91ed1e100a584--aab85de29a6d4d80b1c32299d06366c6
ec21582d30484cd39cacd91af72b43fb
1
697a14e1c3854aaf9e62629d3b42d1b2
RY(p1₄)
aab85de29a6d4d80b1c32299d06366c6--697a14e1c3854aaf9e62629d3b42d1b2
837c76e9c62e4ee7a8a36441d7b89f8d
RX(p1₈)
697a14e1c3854aaf9e62629d3b42d1b2--837c76e9c62e4ee7a8a36441d7b89f8d
f09aefc5452c4ec19eec503c58ba4aff
837c76e9c62e4ee7a8a36441d7b89f8d--f09aefc5452c4ec19eec503c58ba4aff
0b01f29aa5a2433c9ed8cebe6df6505d
f09aefc5452c4ec19eec503c58ba4aff--0b01f29aa5a2433c9ed8cebe6df6505d
d831465cbafa4eb0aca5093ab0ebff50
RX(p1₁₂)
0b01f29aa5a2433c9ed8cebe6df6505d--d831465cbafa4eb0aca5093ab0ebff50
b8d6bd9a25a0438986fdd3afb4d9de5d
RY(p1₁₆)
d831465cbafa4eb0aca5093ab0ebff50--b8d6bd9a25a0438986fdd3afb4d9de5d
0d1d81fe2486434ca97e633ae42962c0
RX(p1₂₀)
b8d6bd9a25a0438986fdd3afb4d9de5d--0d1d81fe2486434ca97e633ae42962c0
97f76af6281244eabd618b39935c4d67
0d1d81fe2486434ca97e633ae42962c0--97f76af6281244eabd618b39935c4d67
03c078d6b07f4bff8670e8a797ecd981
97f76af6281244eabd618b39935c4d67--03c078d6b07f4bff8670e8a797ecd981
bcdc82b5393549c7bd0c1fd341976cf1
RX(p2₀)
03c078d6b07f4bff8670e8a797ecd981--bcdc82b5393549c7bd0c1fd341976cf1
1c229291387641c297ca883f4fe24086
RY(p2₄)
bcdc82b5393549c7bd0c1fd341976cf1--1c229291387641c297ca883f4fe24086
e6775f59f8b44c87ad47bae43417563a
RX(p2₈)
1c229291387641c297ca883f4fe24086--e6775f59f8b44c87ad47bae43417563a
9ce8cd3335c24b24a3cfe873ab195f8e
e6775f59f8b44c87ad47bae43417563a--9ce8cd3335c24b24a3cfe873ab195f8e
f62ea63a604e49fa8aba1f23266707ab
9ce8cd3335c24b24a3cfe873ab195f8e--f62ea63a604e49fa8aba1f23266707ab
9e7ae1fd64784590955e4e435e266fdc
RX(p2₁₂)
f62ea63a604e49fa8aba1f23266707ab--9e7ae1fd64784590955e4e435e266fdc
93c1d3461c2b4693aeaa85862fb29523
RY(p2₁₆)
9e7ae1fd64784590955e4e435e266fdc--93c1d3461c2b4693aeaa85862fb29523
87a6125ae692409084059025e82ee6f4
RX(p2₂₀)
93c1d3461c2b4693aeaa85862fb29523--87a6125ae692409084059025e82ee6f4
e35308919ce14ce6bdb6743e31915355
87a6125ae692409084059025e82ee6f4--e35308919ce14ce6bdb6743e31915355
d9640938ff9d4b8b825c5cc05fb4f920
e35308919ce14ce6bdb6743e31915355--d9640938ff9d4b8b825c5cc05fb4f920
3a193ccd047d49f6b68cc8e7e8d15e75
d9640938ff9d4b8b825c5cc05fb4f920--3a193ccd047d49f6b68cc8e7e8d15e75
925d551066304ca8be178268b1a20b1b
b6c4a0336eac430ab6150d786ed22415
RX(p1₁)
ec21582d30484cd39cacd91af72b43fb--b6c4a0336eac430ab6150d786ed22415
2b134d50948e49fa8e64cf077bec859a
2
5c8c42364a344ced879e588d3f677c26
RY(p1₅)
b6c4a0336eac430ab6150d786ed22415--5c8c42364a344ced879e588d3f677c26
7942bf64725a46e09ef6bb2d4829114f
RX(p1₉)
5c8c42364a344ced879e588d3f677c26--7942bf64725a46e09ef6bb2d4829114f
2c2863af1a7a416896e4a6ed47c79eb1
X
7942bf64725a46e09ef6bb2d4829114f--2c2863af1a7a416896e4a6ed47c79eb1
2c2863af1a7a416896e4a6ed47c79eb1--f09aefc5452c4ec19eec503c58ba4aff
b8343ea6237e4f268f2eebb01af7dbe4
2c2863af1a7a416896e4a6ed47c79eb1--b8343ea6237e4f268f2eebb01af7dbe4
5bcaa0f604f845dda27d83a9f0a5198b
RX(p1₁₃)
b8343ea6237e4f268f2eebb01af7dbe4--5bcaa0f604f845dda27d83a9f0a5198b
980a68c7726b47958ff937e59269c5c1
RY(p1₁₇)
5bcaa0f604f845dda27d83a9f0a5198b--980a68c7726b47958ff937e59269c5c1
4ddde7fb11494023a56da6eedcb413e9
RX(p1₂₁)
980a68c7726b47958ff937e59269c5c1--4ddde7fb11494023a56da6eedcb413e9
72a585aeddb2471b80f01b11f44ab1d9
X
4ddde7fb11494023a56da6eedcb413e9--72a585aeddb2471b80f01b11f44ab1d9
72a585aeddb2471b80f01b11f44ab1d9--97f76af6281244eabd618b39935c4d67
57e446dcf3ac4b709f0fe72e699fe38b
72a585aeddb2471b80f01b11f44ab1d9--57e446dcf3ac4b709f0fe72e699fe38b
935d4a5e315643c386c3259e0a1e1eef
RX(p2₁)
57e446dcf3ac4b709f0fe72e699fe38b--935d4a5e315643c386c3259e0a1e1eef
b018a283964c40c2bc9e24f35740f79d
RY(p2₅)
935d4a5e315643c386c3259e0a1e1eef--b018a283964c40c2bc9e24f35740f79d
e36cd17f83c64a6a89589ba4aaf9eecc
RX(p2₉)
b018a283964c40c2bc9e24f35740f79d--e36cd17f83c64a6a89589ba4aaf9eecc
bfbc2373801642adada240bc95f43c2e
X
e36cd17f83c64a6a89589ba4aaf9eecc--bfbc2373801642adada240bc95f43c2e
bfbc2373801642adada240bc95f43c2e--9ce8cd3335c24b24a3cfe873ab195f8e
17bec047795b4cf2905f189718648992
bfbc2373801642adada240bc95f43c2e--17bec047795b4cf2905f189718648992
24cc5831405b47e190ed194eaf16537a
RX(p2₁₃)
17bec047795b4cf2905f189718648992--24cc5831405b47e190ed194eaf16537a
031b0dba59184cf994751a4680655648
RY(p2₁₇)
24cc5831405b47e190ed194eaf16537a--031b0dba59184cf994751a4680655648
0918ab9e6fb84a50ba3ef7412384ed5b
RX(p2₂₁)
031b0dba59184cf994751a4680655648--0918ab9e6fb84a50ba3ef7412384ed5b
61278b5f09564f86a28237eaa71ee335
X
0918ab9e6fb84a50ba3ef7412384ed5b--61278b5f09564f86a28237eaa71ee335
61278b5f09564f86a28237eaa71ee335--e35308919ce14ce6bdb6743e31915355
69aa1f0ac86d4710a2f91f661f01dd4d
61278b5f09564f86a28237eaa71ee335--69aa1f0ac86d4710a2f91f661f01dd4d
69aa1f0ac86d4710a2f91f661f01dd4d--925d551066304ca8be178268b1a20b1b
4f73e79e917c44cd8ff0150b63f2e2e9
7c5aaa214a7f4de198d00350501f01cb
RX(p1₂)
2b134d50948e49fa8e64cf077bec859a--7c5aaa214a7f4de198d00350501f01cb
e8aeb321f394414da1242e8d1b4c8da4
3
6c07a188eb704cc99f3dd85e6b479447
RY(p1₆)
7c5aaa214a7f4de198d00350501f01cb--6c07a188eb704cc99f3dd85e6b479447
27e98d9f9bed4a4ca5727d8e735ea34b
RX(p1₁₀)
6c07a188eb704cc99f3dd85e6b479447--27e98d9f9bed4a4ca5727d8e735ea34b
608671f067004c2396efc6f86a045a9f
27e98d9f9bed4a4ca5727d8e735ea34b--608671f067004c2396efc6f86a045a9f
3b3a25cd6c9f4744b92d814213d5d5f8
X
608671f067004c2396efc6f86a045a9f--3b3a25cd6c9f4744b92d814213d5d5f8
3b3a25cd6c9f4744b92d814213d5d5f8--b8343ea6237e4f268f2eebb01af7dbe4
bd2a5cd54d5e48a1967d6094f5a30daa
RX(p1₁₄)
3b3a25cd6c9f4744b92d814213d5d5f8--bd2a5cd54d5e48a1967d6094f5a30daa
ec2e6cba937447c8a887f309e35ff4ab
RY(p1₁₈)
bd2a5cd54d5e48a1967d6094f5a30daa--ec2e6cba937447c8a887f309e35ff4ab
1139f72872814986ae0790355de9564c
RX(p1₂₂)
ec2e6cba937447c8a887f309e35ff4ab--1139f72872814986ae0790355de9564c
e1f990a703884ddebf563b9e36bb2d5c
1139f72872814986ae0790355de9564c--e1f990a703884ddebf563b9e36bb2d5c
69a1725dbe054855a2a339fe74b27102
X
e1f990a703884ddebf563b9e36bb2d5c--69a1725dbe054855a2a339fe74b27102
69a1725dbe054855a2a339fe74b27102--57e446dcf3ac4b709f0fe72e699fe38b
96ebe9a2a0554e339c76232d15b4af7e
RX(p2₂)
69a1725dbe054855a2a339fe74b27102--96ebe9a2a0554e339c76232d15b4af7e
8cd96a4868954cd6b0de8e2b065ea651
RY(p2₆)
96ebe9a2a0554e339c76232d15b4af7e--8cd96a4868954cd6b0de8e2b065ea651
fa9484571c08472cb200cd4ec3103644
RX(p2₁₀)
8cd96a4868954cd6b0de8e2b065ea651--fa9484571c08472cb200cd4ec3103644
12f829010a9048dc839012f99a09e3af
fa9484571c08472cb200cd4ec3103644--12f829010a9048dc839012f99a09e3af
1435cebe2c4c444cb20be840c33168ea
X
12f829010a9048dc839012f99a09e3af--1435cebe2c4c444cb20be840c33168ea
1435cebe2c4c444cb20be840c33168ea--17bec047795b4cf2905f189718648992
33e390b0e49844a7808c4ddb9be377c5
RX(p2₁₄)
1435cebe2c4c444cb20be840c33168ea--33e390b0e49844a7808c4ddb9be377c5
44487d2bf3654470ae73113fae57e39b
RY(p2₁₈)
33e390b0e49844a7808c4ddb9be377c5--44487d2bf3654470ae73113fae57e39b
2d96c3a8905340659c8d0b0160647264
RX(p2₂₂)
44487d2bf3654470ae73113fae57e39b--2d96c3a8905340659c8d0b0160647264
3fe56973a6cf41f1807595c9053184d9
2d96c3a8905340659c8d0b0160647264--3fe56973a6cf41f1807595c9053184d9
2345c2c1ae6d46c6ab5a5b05694b705b
X
3fe56973a6cf41f1807595c9053184d9--2345c2c1ae6d46c6ab5a5b05694b705b
2345c2c1ae6d46c6ab5a5b05694b705b--69aa1f0ac86d4710a2f91f661f01dd4d
2345c2c1ae6d46c6ab5a5b05694b705b--4f73e79e917c44cd8ff0150b63f2e2e9
61e062c5cd5f4b18ae21566c021884f4
faf7bf392fe247048f38b750a0d8413d
RX(p1₃)
e8aeb321f394414da1242e8d1b4c8da4--faf7bf392fe247048f38b750a0d8413d
a8fea432e6a84988a117de027d0a451a
RY(p1₇)
faf7bf392fe247048f38b750a0d8413d--a8fea432e6a84988a117de027d0a451a
c75fbb7e58b64625aecb7d27ad6e04eb
RX(p1₁₁)
a8fea432e6a84988a117de027d0a451a--c75fbb7e58b64625aecb7d27ad6e04eb
cf895d2008ff42dbb42fcda96fe7fc3c
X
c75fbb7e58b64625aecb7d27ad6e04eb--cf895d2008ff42dbb42fcda96fe7fc3c
cf895d2008ff42dbb42fcda96fe7fc3c--608671f067004c2396efc6f86a045a9f
fbff1b06974142b484457281a14b6b2a
cf895d2008ff42dbb42fcda96fe7fc3c--fbff1b06974142b484457281a14b6b2a
eb0493ffdaea46ae9712aa6f98b46ffb
RX(p1₁₅)
fbff1b06974142b484457281a14b6b2a--eb0493ffdaea46ae9712aa6f98b46ffb
b93184331ebd42e6a6720df7e2d98595
RY(p1₁₉)
eb0493ffdaea46ae9712aa6f98b46ffb--b93184331ebd42e6a6720df7e2d98595
5ecad5a2a80b49b5bd409ec5ae502d22
RX(p1₂₃)
b93184331ebd42e6a6720df7e2d98595--5ecad5a2a80b49b5bd409ec5ae502d22
8672618615a749ebaa8961d7b16a06f5
X
5ecad5a2a80b49b5bd409ec5ae502d22--8672618615a749ebaa8961d7b16a06f5
8672618615a749ebaa8961d7b16a06f5--e1f990a703884ddebf563b9e36bb2d5c
69704e23e4a04fad96771b07c714ff03
8672618615a749ebaa8961d7b16a06f5--69704e23e4a04fad96771b07c714ff03
24a5aa4cc6ae4192b281ccf1e1e3a701
RX(p2₃)
69704e23e4a04fad96771b07c714ff03--24a5aa4cc6ae4192b281ccf1e1e3a701
9db7bcaa42ea48d29c70350ae8567806
RY(p2₇)
24a5aa4cc6ae4192b281ccf1e1e3a701--9db7bcaa42ea48d29c70350ae8567806
4ba2a781cf7749c3ae26626ba77bf313
RX(p2₁₁)
9db7bcaa42ea48d29c70350ae8567806--4ba2a781cf7749c3ae26626ba77bf313
51a402fada64427f8a66c7c31b7fa91a
X
4ba2a781cf7749c3ae26626ba77bf313--51a402fada64427f8a66c7c31b7fa91a
51a402fada64427f8a66c7c31b7fa91a--12f829010a9048dc839012f99a09e3af
8a626c40021c4755997fcfc9716368b7
51a402fada64427f8a66c7c31b7fa91a--8a626c40021c4755997fcfc9716368b7
e6877d65efa145beb98166362f4b01c8
RX(p2₁₅)
8a626c40021c4755997fcfc9716368b7--e6877d65efa145beb98166362f4b01c8
f30ee2f0fea44227a5326855127818df
RY(p2₁₉)
e6877d65efa145beb98166362f4b01c8--f30ee2f0fea44227a5326855127818df
d15a4f393f8f4c28b49951eaf789a0d1
RX(p2₂₃)
f30ee2f0fea44227a5326855127818df--d15a4f393f8f4c28b49951eaf789a0d1
fec250c2575147d3aa53b2d852dee462
X
d15a4f393f8f4c28b49951eaf789a0d1--fec250c2575147d3aa53b2d852dee462
fec250c2575147d3aa53b2d852dee462--3fe56973a6cf41f1807595c9053184d9
868eeb59133d4cfca0e7389049fbf1e8
fec250c2575147d3aa53b2d852dee462--868eeb59133d4cfca0e7389049fbf1e8
868eeb59133d4cfca0e7389049fbf1e8--61e062c5cd5f4b18ae21566c021884f4
The hea
function will be further explored in the QML Constructors tutorial .
Parametric observables
In Qadence, one can define quantum observables with classical optimizable parameters to
improve the convergence of QML calculations. This is particularly useful for differentiable quantum circuits.
from qadence import VariationalParameter , Z , add , tag
s = VariationalParameter ( "s" )
observable = add ( s * Z ( i ) for i in range ( n_qubits ))
Now, a quantum model can be created with the parametric observable.
The observable variational parameters are included among the model ones.
from qadence import QuantumModel , QuantumCircuit
circuit = QuantumCircuit ( n_qubits , hea ( n_qubits , depth ))
model = QuantumModel ( circuit , observable = observable )
Varia t io nal parame ters = OrderedDic t ( [ ('s' , tens or( [ 0.9406 ] )) , (' t he ta _ 0 ' , tens or( [ 0.7951 ] )) , (' t he ta _ 1 ' , tens or( [ 0.3345 ] )) , (' t he ta _ 10 ' , tens or( [ 0.8927 ] )) , (' t he ta _ 11 ' , tens or( [ 0.3210 ] )) , (' t he ta _ 12 ' , tens or( [ 0.3358 ] )) , (' t he ta _ 13 ' , tens or( [ 0.6445 ] )) , (' t he ta _ 14 ' , tens or( [ 0.1183 ] )) , (' t he ta _ 15 ' , tens or( [ 0.8274 ] )) , (' t he ta _ 16 ' , tens or( [ 0.6881 ] )) , (' t he ta _ 17 ' , tens or( [ 0.5928 ] )) , (' t he ta _ 18 ' , tens or( [ 0.2551 ] )) , (' t he ta _ 19 ' , tens or( [ 0.3500 ] )) , (' t he ta _ 2 ' , tens or( [ 0.3125 ] )) , (' t he ta _ 20 ' , tens or( [ 0.5327 ] )) , (' t he ta _ 21 ' , tens or( [ 0.0981 ] )) , (' t he ta _ 22 ' , tens or( [ 0.1385 ] )) , (' t he ta _ 23 ' , tens or( [ 0.6408 ] )) , (' t he ta _ 3 ' , tens or( [ 0.4979 ] )) , (' t he ta _ 4 ' , tens or( [ 0.4264 ] )) , (' t he ta _ 5 ' , tens or( [ 0.5154 ] )) , (' t he ta _ 6 ' , tens or( [ 0.6589 ] )) , (' t he ta _ 7 ' , tens or( [ 0.1994 ] )) , (' t he ta _ 8 ' , tens or( [ 0.9758 ] )) , (' t he ta _ 9 ' , tens or( [ 0.9689 ] )) ] )
One optimization step (forward and backward pass) can be performed using built-in torch
functionalities. Variational parameters
can be checked to have been updated accordingly:
import torch
mse_loss = torch . nn . MSELoss ()
optimizer = torch . optim . Adam ( model . parameters ())
# Compute forward & backward pass
optimizer . zero_grad ()
loss = mse_loss ( model . expectation ({}), torch . zeros ( 1 ))
loss . backward ()
# Update the parameters and check the parameters.
optimizer . step ()
Varia t io nal parame ters = OrderedDic t ( [ ('s' , tens or( [ 0.9396 ] )) , (' t he ta _ 0 ' , tens or( [ 0.7941 ] )) , (' t he ta _ 1 ' , tens or( [ 0.3335 ] )) , (' t he ta _ 10 ' , tens or( [ 0.8937 ] )) , (' t he ta _ 11 ' , tens or( [ 0.3200 ] )) , (' t he ta _ 12 ' , tens or( [ 0.3348 ] )) , (' t he ta _ 13 ' , tens or( [ 0.6435 ] )) , (' t he ta _ 14 ' , tens or( [ 0.1193 ] )) , (' t he ta _ 15 ' , tens or( [ 0.8264 ] )) , (' t he ta _ 16 ' , tens or( [ 0.6891 ] )) , (' t he ta _ 17 ' , tens or( [ 0.5918 ] )) , (' t he ta _ 18 ' , tens or( [ 0.2561 ] )) , (' t he ta _ 19 ' , tens or( [ 0.3510 ] )) , (' t he ta _ 2 ' , tens or( [ 0.3135 ] )) , (' t he ta _ 20 ' , tens or( [ 0.5317 ] )) , (' t he ta _ 21 ' , tens or( [ 0.0971 ] )) , (' t he ta _ 22 ' , tens or( [ 0.1395 ] )) , (' t he ta _ 23 ' , tens or( [ 0.6398 ] )) , (' t he ta _ 3 ' , tens or( [ 0.4969 ] )) , (' t he ta _ 4 ' , tens or( [ 0.4254 ] )) , (' t he ta _ 5 ' , tens or( [ 0.5144 ] )) , (' t he ta _ 6 ' , tens or( [ 0.6579 ] )) , (' t he ta _ 7 ' , tens or( [ 0.2004 ] )) , (' t he ta _ 8 ' , tens or( [ 0.9748 ] )) , (' t he ta _ 9 ' , tens or( [ 0.9679 ] )) ] )
Non-unitary circuits
Qadence allows to compose with non-unitary blocks.
Here is an example of a non-unitary block as a sum of Pauli operators with complex coefficients.
Currently, only the PyQTorch
backend fully supports execution with non-unitary circuits.
from qadence import QuantumModel , QuantumCircuit , Z , X
c1 = 2.0
c2 = 2.0 + 2.0 j
block = c1 * Z ( 0 ) + c2 * X ( 1 ) + c1 * c2 * ( Z ( 2 ) + X ( 3 ))
circuit = QuantumCircuit ( 4 , block )
model = QuantumModel ( circuit ) # BackendName.PYQTORCH and DiffMode.AD by default.
w f = tens or( [[ 6.+4. j , 4.+4. j , 0.+0. j , 0.+0. j , 2.+2. j , 0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j ,
0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j ]] )