I am using Pennylane to run a quantum-classical hybrid structure, the quantum circuit returns a reduced density matrix, the quantum circuit is built by the following code:
qml.enable_tape() n_qubits = 8 dev = qml.device("default.qubit", wires=n_qubits) @qml.qnode(dev) def qnode(inputs, weights): qml.templates.AmplitudeEmbedding(features=inputs, wires=range(n_qubits), normalize=False) for i in range(n_qubits): qml.Hadamard(wires=i) qml.templates.BasicEntanglerLayers(weights, wires=range(n_qubits), rotation=qml.RY) return qml.density_matrix(wires=range(N_encode))
Then I transfer qnode to a PyTorch layer by:
qlayer = qml.qnn.TorchLayer(qnode, weight_shapes)
The output of qlayer is a density matrix, the matrix elements are flatterned and sent to a PyTorch Linear layer. After the network is built, the backward() raises an error:
RuntimeError: The jacobian method does not support circuits that return the state
Can anyone help me?