import pennylane as qml import torch import torch.nn as nn # --- KUANTUM DEVRESİ AYARLARI --- n_qubits = 4 # 4 Qubit kullanacağız n_layers = 2 # Derinlik (Karmaşıklık) dev = qml.device("default.qubit", wires=n_qubits) # Simülatör # Kuantum Devresi Tanımı (QNode) @qml.qnode(dev, interface="torch") # PyTorch ile konuşabilmesi için def quantum_circuit(inputs, weights): # 1. Veriyi Qubitlere Yükle (Embedding) # Lidar verisini açılara dönüştürüp qubitleri döndürüyoruz qml.templates.AngleEmbedding(inputs, wires=range(n_qubits)) # 2. İşlem Katmanı (Weights) # Yapay Zeka bu ağırlıkları (açıları) öğrenecek qml.templates.StronglyEntanglingLayers(weights, wires=range(n_qubits)) # 3. Ölçüm (Measurement) # Pauli-Z ekseninde ölçüm yapıp klasik sayıya çeviriyoruz return [qml.expval(qml.PauliZ(wires=i)) for i in range(n_qubits)] # --- HİBRİT KATMAN (PyTorch Modülü) --- class HybridQuantumLayer(nn.Module): def __init__(self): super().__init__() # Ağırlıkların şekli: (Katman Sayısı, Qubit Sayısı, 3) weight_shapes = {"weights": (n_layers, n_qubits, 3)} # PennyLane devresini PyTorch katmanına çeviriyoruz self.q_layer = qml.qnn.TorchLayer(quantum_circuit, weight_shapes) def forward(self, x): # x: Klasik veri # Çıktı: Kuantum işleminden geçmiş veri return self.q_layer(x)