Samabe1109's picture
download
raw
2.74 kB
#!/usr/bin/env bash
set -euo pipefail
echo "=========================================="
echo " Quantum Syndrome Decoder - Setup & Train"
echo "=========================================="
# --- 1. Environment Setup ---
PYTHON="${PYTHON:-python3}"
VENV_DIR="${VENV_DIR:-.venv}"
if [ ! -d "$VENV_DIR" ]; then
echo "[1/5] Creating virtual environment..."
$PYTHON -m venv "$VENV_DIR"
fi
echo "[1/5] Activating virtual environment..."
source "$VENV_DIR/bin/activate"
echo "[2/5] Installing dependencies..."
pip install --upgrade pip setuptools wheel -q
pip install torch numpy stim pymatching -q
# Verify installations
echo " torch: $(python -c 'import torch; print(torch.__version__)')"
echo " numpy: $(python -c 'import numpy; print(numpy.__version__)')"
echo " stim: $(python -c 'import stim; print(stim.__version__)')"
echo " pymatching:$(python -c 'import pymatching; print(pymatching.__version__)')"
# --- 2. Data Generation ---
echo "[3/5] Generating synthetic syndrome dataset..."
python generate_data.py
# --- 3. Training ---
echo "[4/5] Training supervised 3D CNN decoder..."
python train_decoder.py \
--mode supervised \
--distance 5 \
--epochs 50 \
--batch_size 128 \
--lr 5e-4 \
--channels 128 \
--layers 4 \
--data_dir data \
--output_dir outputs
# --- 4. Evaluation ---
echo "[5/5] Evaluating trained model..."
python -c "
import torch
import numpy as np
import json
from decoder_model import QuantumSyndromeDecoder
from train_decoder import SyndromeDataset, DataLoader, evaluate_decoder
device = 'cuda' if torch.cuda.is_available() else 'cpu'
print(f' Evaluation device: {device}')
model = QuantumSyndromeDecoder(distance=5, channels=128, num_layers=4)
checkpoint = torch.load('outputs/decoder_best.pt', map_location=device)
model.load_state_dict(checkpoint['model_state_dict'])
model = model.to(device)
syndromes = np.load('data/syndromes.npy')
errors = np.load('data/errors.npy')
n = len(syndromes)
test_dataset = SyndromeDataset(syndromes[int(0.9*n):], errors[int(0.9*n):])
test_loader = DataLoader(test_dataset, batch_size=64)
results = evaluate_decoder(model, test_loader, device)
# Save detailed results
with open('outputs/final_results.json', 'w') as f:
json.dump(results, f, indent=2)
print(f' Precision: {results[\"precision\"]:.4f}')
print(f' Recall: {results[\"recall\"]:.4f}')
print(f' F1 Score: {2*results[\"precision\"]*results[\"recall\"]/(results[\"precision\"]+results[\"recall\"]+1e-8):.4f}')
"
echo "=========================================="
echo " Training Complete!"
echo " Model: outputs/decoder_best.pt"
echo " Results: outputs/final_results.json"
echo "=========================================="

Xet Storage Details

Size:
2.74 kB
·
Xet hash:
ca8bced549009bc855e8b29e7c9a4a01adedcb9cdd25aaa08ebf1336b95deee5

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.