Optimization Tutorial¶
This tutorial demonstrates optimization techniques for quantum data embeddings.
Optimization Tutorial¶
This tutorial demonstrates optimization techniques for quantum data embeddings.
In [ ]:
Copied!
import numpy as np
from quantum_data_embedding_suite.embeddings import AngleEmbedding
from quantum_data_embedding_suite.metrics import expressibility, trainability
import matplotlib.pyplot as plt
import numpy as np
from quantum_data_embedding_suite.embeddings import AngleEmbedding
from quantum_data_embedding_suite.metrics import expressibility, trainability
import matplotlib.pyplot as plt
Hyperparameter Optimization¶
Learn how to optimize embedding hyperparameters for better performance.
In [ ]:
Copied!
# Create sample data
X = np.random.randn(100, 4)
# Test different hyperparameters
results = {}
for n_qubits in [3, 4, 5]:
embedding = AngleEmbedding(n_qubits=n_qubits)
expr_score = expressibility(embedding, n_samples=200)
train_score = trainability(embedding, data=X[:50])
results[n_qubits] = {
'expressibility': expr_score,
'trainability': train_score
}
print(f"n_qubits={n_qubits}: expr={expr_score:.4f}, train={train_score:.4f}")
# Create sample data
X = np.random.randn(100, 4)
# Test different hyperparameters
results = {}
for n_qubits in [3, 4, 5]:
embedding = AngleEmbedding(n_qubits=n_qubits)
expr_score = expressibility(embedding, n_samples=200)
train_score = trainability(embedding, data=X[:50])
results[n_qubits] = {
'expressibility': expr_score,
'trainability': train_score
}
print(f"n_qubits={n_qubits}: expr={expr_score:.4f}, train={train_score:.4f}")
Performance Analysis¶
Analyze the performance characteristics of different embeddings.
In [ ]:
Copied!
# Plot results
n_qubits_list = list(results.keys())
expr_scores = [results[n]['expressibility'] for n in n_qubits_list]
train_scores = [results[n]['trainability'] for n in n_qubits_list]
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(n_qubits_list, expr_scores, 'o-')
plt.xlabel('Number of Qubits')
plt.ylabel('Expressibility')
plt.title('Expressibility vs Qubits')
plt.grid(True)
plt.subplot(1, 2, 2)
plt.plot(n_qubits_list, train_scores, 'o-', color='red')
plt.xlabel('Number of Qubits')
plt.ylabel('Trainability')
plt.title('Trainability vs Qubits')
plt.grid(True)
plt.tight_layout()
plt.show()
# Plot results
n_qubits_list = list(results.keys())
expr_scores = [results[n]['expressibility'] for n in n_qubits_list]
train_scores = [results[n]['trainability'] for n in n_qubits_list]
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(n_qubits_list, expr_scores, 'o-')
plt.xlabel('Number of Qubits')
plt.ylabel('Expressibility')
plt.title('Expressibility vs Qubits')
plt.grid(True)
plt.subplot(1, 2, 2)
plt.plot(n_qubits_list, train_scores, 'o-', color='red')
plt.xlabel('Number of Qubits')
plt.ylabel('Trainability')
plt.title('Trainability vs Qubits')
plt.grid(True)
plt.tight_layout()
plt.show()
In [ ]:
Copied!
import numpy as np
from quantum_data_embedding_suite.embeddings import AngleEmbedding
from quantum_data_embedding_suite.metrics import expressibility, trainability
import matplotlib.pyplot as plt
import numpy as np
from quantum_data_embedding_suite.embeddings import AngleEmbedding
from quantum_data_embedding_suite.metrics import expressibility, trainability
import matplotlib.pyplot as plt
Hyperparameter Optimization¶
Learn how to optimize embedding hyperparameters for better performance.
In [ ]:
Copied!
# Create sample data
X = np.random.randn(100, 4)
# Test different hyperparameters
results = {}
for n_qubits in [3, 4, 5]:
embedding = AngleEmbedding(n_qubits=n_qubits)
expr_score = expressibility(embedding, n_samples=200)
train_score = trainability(embedding, data=X[:50])
results[n_qubits] = {
'expressibility': expr_score,
'trainability': train_score
}
print(f"n_qubits={n_qubits}: expr={expr_score:.4f}, train={train_score:.4f}")
# Create sample data
X = np.random.randn(100, 4)
# Test different hyperparameters
results = {}
for n_qubits in [3, 4, 5]:
embedding = AngleEmbedding(n_qubits=n_qubits)
expr_score = expressibility(embedding, n_samples=200)
train_score = trainability(embedding, data=X[:50])
results[n_qubits] = {
'expressibility': expr_score,
'trainability': train_score
}
print(f"n_qubits={n_qubits}: expr={expr_score:.4f}, train={train_score:.4f}")
Performance Analysis¶
Analyze the performance characteristics of different embeddings.
In [ ]:
Copied!
# Plot results
n_qubits_list = list(results.keys())
expr_scores = [results[n]['expressibility'] for n in n_qubits_list]
train_scores = [results[n]['trainability'] for n in n_qubits_list]
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(n_qubits_list, expr_scores, 'o-')
plt.xlabel('Number of Qubits')
plt.ylabel('Expressibility')
plt.title('Expressibility vs Qubits')
plt.grid(True)
plt.subplot(1, 2, 2)
plt.plot(n_qubits_list, train_scores, 'o-', color='red')
plt.xlabel('Number of Qubits')
plt.ylabel('Trainability')
plt.title('Trainability vs Qubits')
plt.grid(True)
plt.tight_layout()
plt.show()
# Plot results
n_qubits_list = list(results.keys())
expr_scores = [results[n]['expressibility'] for n in n_qubits_list]
train_scores = [results[n]['trainability'] for n in n_qubits_list]
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(n_qubits_list, expr_scores, 'o-')
plt.xlabel('Number of Qubits')
plt.ylabel('Expressibility')
plt.title('Expressibility vs Qubits')
plt.grid(True)
plt.subplot(1, 2, 2)
plt.plot(n_qubits_list, train_scores, 'o-', color='red')
plt.xlabel('Number of Qubits')
plt.ylabel('Trainability')
plt.title('Trainability vs Qubits')
plt.grid(True)
plt.tight_layout()
plt.show()