Spaces:
Sleeping
Sleeping
File size: 919 Bytes
2f560eb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
from .ansatz import quantum_circuit # type: ignore
import torch # type: ignore
import torch.nn as nn # type: ignore
from .ansatz import N_LAYERS, N_QUBITS
N_TIMESTEPS = 15
class QuantumGenerator(nn.Module):
def __init__(self):
super().__init__()
self.weights = nn.Parameter(0.01 * torch.randn(N_LAYERS, N_QUBITS, 3))
self.shaping = nn.Linear(N_QUBITS, N_TIMESTEPS)
def forward(self, batch_size):
# 1. GENERATE NOISE (The "Seed")
# Create a batch of random numbers (z)
z = torch.randn(batch_size, N_QUBITS)
# 2. RUN CIRCUIT (Broadcasted)
# We pass 'z' as inputs. PennyLane runs 'batch_size' simulations in parallel.
# Output shape: [15, batch_size] -> Transpose to [batch_size, 15]
q_out = torch.stack(quantum_circuit(z, self.weights), dim=1).float()
# 3. SHAPE OUTPUT
return self.shaping(q_out) |