Beispiel #1
0
    def expand(self):

        with qml.tape.QuantumTape() as tape:

            qml.BasisEmbedding(self.init_state, wires=self.wires)
            weight = self.parameters[0]

            for layer in range(self.n_layers):
                for idx, wires in enumerate(self.qwires):

                    if self.include_pi:
                        qml.OrbitalRotation(np.pi, wires=wires)

                    qml.DoubleExcitation(weight[layer][idx][0], wires=wires)
                    qml.OrbitalRotation(weight[layer][idx][1], wires=wires)

        return tape
Beispiel #2
0
    def expand(self):

        with qml.tape.QuantumTape() as tape:

            qml.BasisEmbedding(self.init_state_flipped, wires=self.wires)
            weights = self.parameters[0]

            for layer in range(self.k):
                for i, (w1, w2) in enumerate(self.d_wires):
                    qml.FermionicDoubleExcitation(
                        weights[layer][len(self.s_wires) + i],
                        wires1=w1,
                        wires2=w2)

                for j, s_wires_ in enumerate(self.s_wires):
                    qml.FermionicSingleExcitation(weights[layer][j],
                                                  wires=s_wires_)

        return tape
Beispiel #3
0
    def expand(self):

        nm_wires = [
            self.wires[l:l + 2] for l in range(0,
                                               len(self.wires) - 1, 2)
        ]
        nm_wires += [
            self.wires[l:l + 2] for l in range(1,
                                               len(self.wires) - 1, 2)
        ]

        with qml.tape.QuantumTape() as tape:

            qml.BasisEmbedding(self.init_state, wires=self.wires)

            for l in range(self.n_layers):
                for i, wires_ in enumerate(nm_wires):
                    u1_ex_gate(self.parameters[0][l, i, 0],
                               self.parameters[0][l, i, 1],
                               wires=wires_)

        return tape
Beispiel #4
0
 def circuit(x=None):
     qml.BasisEmbedding(features=x, wires=range(2))
     return qml.expval(qml.PauliZ(0))
Beispiel #5
0
 def circuit2():
     qml.BasisEmbedding(features, wires=["z", "a", "k"])
     return qml.expval(qml.Identity("z"))
Beispiel #6
0
 def circuit():
     qml.BasisEmbedding(features, wires=range(3))
     return qml.expval(qml.Identity(0))
Beispiel #7
0
 def circuit(x=None):
     qml.BasisEmbedding(features=x, wires=range(2))
     return [qml.expval(qml.PauliZ(i)) for i in range(n_qubits)]
Beispiel #8
0
def circuit_template(features):
    qml.BasisEmbedding(features, wires=range(3))
    return qml.state()
Beispiel #9
0
 def test_id(self):
     """Tests that the id attribute can be set."""
     template = qml.BasisEmbedding([0, 1], wires=[0, 1], id="a")
     assert template.id == "a"