Python实现(PennyLane示例):
import pennylane as qmlfrom pennylane import numpy as npfrom sklearn.datasets import make_classificationfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import MinMaxScalerimport torchimport torch.nn as nnimport torch.optim as optimX, y = make_classification(n_samples=200, n_features=4, n_informative=4, n_redundant=0, random_state=42)y = y * 2 - 1scaler = MinMaxScaler(feature_range=(0, np.pi)) X_scaled = scaler.fit_transform(X)X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)X_train_t = torch.tensor(X_train, dtype=torch.float32)y_train_t = torch.tensor(y_train, dtype=torch.float32).unsqueeze(1) X_test_t = torch.tensor(X_test, dtype=torch.float32)y_test_t = torch.tensor(y_test, dtype=torch.float32).unsqueeze(1)n_qubits = X.shape[1] dev = qml.device(\"default.qubit\", wires=n_qubits)@qml.qnode(dev, interface=\"torch\")def vqc_circuit(inputs, weights): for i in range(n_qubits): qml.RY(inputs[i], wires=i) for i in range(n_qubits - 1): qml.CNOT(wires=[i, i + 1]) for i in range(n_qubits): qml.RY(inputs[i], wires=i) n_layers = weights.shape[0] for l in range(n_layers): for i in range(n_qubits)