我正在研究深度学习中的混合经典量子模型。我不明白哈达玛门和CNOT门在量子训练层的使用。该代码使用 Hadamard 层、CNOT 层和旋转编码。
这是代码
def H_layer(nqubits):
"""Layer of single-qubit Hadamard gates.
"""
for idx in range(nqubits):
qml.Hadamard(wires=idx)
def RY_layer(w):
"""Layer of parametrized qubit rotations around the y axis.
"""
for idx, element in enumerate(w):
qml.RY(element, wires=idx)
def entangling_layer(nqubits):
"""Layer of CNOTs followed by another shifted layer of CNOT.
"""
# In other words it should apply something like :
#CNOT CNOT CNOT CNOT... CNOT
# CNOT CNOT CNOT... CNOT
for i in range(0, nqubits - 1, 2): #loop over even indices: i=0,2,...N-2
qml.CNOT(wires=[i, i + 1])
for i in range(1, nqubits - 1, 2): #loop over odd indices: i=1,3,...N-3
qml.CNOT(wires=[i, i + 1])
为什么代码使用hadamrad门和CNOT门?
该模型似乎通过应用 H 门然后应用所有 CNOT 将两组不同的纠缠量子位设置为贝尔态。
鉴于您共享的代码,我不清楚将两组纠缠量子位分开为偶数和奇数背后的逻辑