Launch the interactive walkthrough to discover each component, including the 3D Q-Sphere Lab & Python in Colab.
Master the three primary strategies to load classical numbers into quantum registers: Basis Encoding, Angle Encoding, and Amplitude Encoding.
Interactive 3D state vector exploration, unitary transformation gates, and Born rule collapse for Topic 8.4
| Symbol / Term | Meaning | Beginner Interpretation |
|---|---|---|
| Amplitude encoded state | Superposition where amplitudes equal normalized feature values | |
| Angle encoded state | Tensor product of independent single-qubit state rotations | |
| Euclidean L2 norm of feature vector | Square root of sum of squares, ensuring quantum state normalizes to 1.0 | |
| Feature capacity of n qubits | log2(N) qubits store N features in amplitude encoding |
Encoding a 4-dimensional classical sensor reading x = [1.0, 2.0, 2.0, 1.0]^T using Amplitude Encoding on 2 qubits (n = log2 4 = 2):
Result: All 4 continuous features are successfully compressed into a single 2-qubit register with exact normalized amplitudes.
Scale features to [0, pi] for angle encoding, or normalize vector norm to 1.0 for amplitude encoding.
Apply Ry(2*x_i) rotations for angle encoding or multi-controlled Givens rotations for amplitude encoding.
State |psi(x)> is passed into variational layers.
Problem: Loading a 1024x1024 pixel medical scan into quantum memory.
Solution: Flexible Representation of Quantum Images (FRQI) uses amplitude encoding to store 1 million pixels in just 20 qubits.
Interactive activity component
Implement both Angle Encoding (rotation gates) and Amplitude Encoding (statevector isometry) in Qiskit and analyze qubit requirements.
For Google Colab or Jupyter notebooks, run this shell command to install the required dependencies:
!pip install qiskit numpy1 from qiskit import QuantumCircuit 2 from qiskit.quantum_info import Statevector 3 import numpy as np
from qiskit import QuantumCircuit β Circuit builder
from qiskit.quantum_info import Statevector β Statevector module
import numpy as np β Vector normalization
1 features = [1.2, 0.7, -0.9, 1.8] 2 print(f'Original Classical Vector: {features}\n') 3 4 # Strategy 1: Angle Encoding (1 qubit per feature -> 4 qubits) 5 qc_angle = QuantumCircuit(4) 6 for i, val in enumerate(features): 7 qc_angle.ry(val, i) # Ry rotation by feature angle 8 print('Strategy 1: Angle Encoding (O(N) qubits):') 9 print(qc_angle.draw('text')) 10 11 # Strategy 2: Amplitude Encoding (log2(N) qubits -> 2 qubits for 4 features) 12 norm = np.linalg.norm(features) 13 norm_features = np.array(features) / norm 14 qc_amp = QuantumCircuit(2) 15 qc_amp.initialize(norm_features, [0, 1]) # Amplitude encoding isometry 16 print('\nStrategy 2: Amplitude Encoding (O(log N) qubits):') 17 print(f'Normalized Amplitudes in 2 Qubits: {norm_features.round(3)}') 18 print(f'Amplitudes verify to exact sum of squares: {np.sum(norm_features**2):.4f}')
features = [1.2, 0.7, -0.9, 1.8]
4-dimensional classical data vector
print(f'Original Classical Vector: {features}\n')
Print vector
# Strategy 1: Angle Encoding (1 qubit per feature -> 4 qubits)
Angle encoding
qc_angle = QuantumCircuit(4)
4 qubits required
for i, val in enumerate(features):
Encode each feature
qc_angle.ry(val, i) # Ry rotation by feature angle
Apply Ry
print('Strategy 1: Angle Encoding (O(N) qubits):')
Header 1
print(qc_angle.draw('text'))
Draw circuit
# Strategy 2: Amplitude Encoding (log2(N) qubits -> 2 qubits for 4 features)
Amplitude encoding
norm = np.linalg.norm(features)
Compute L2 norm
norm_features = np.array(features) / norm
Normalize to unit vector
qc_amp = QuantumCircuit(2)
2^2 = 4 features fits into 2 qubits!
qc_amp.initialize(norm_features, [0, 1]) # Amplitude encoding isometry
Qiskit initialize
print('\nStrategy 2: Amplitude Encoding (O(log N) qubits):')
Header 2
print(f'Normalized Amplitudes in 2 Qubits: {norm_features.round(3)}')
Print amplitudes
print(f'Amplitudes verify to exact sum of squares: {np.sum(norm_features**2):.4f}')
Sum of squares = 1
Click "Copy for Colab", open Google Colab, paste into a single cell, and run.
1 # ========================================================= 2 # Angle Encoding vs Amplitude Encoding in Qiskit 3 # Prepared for Google Colab (Run with Shift + Enter) 4 # ========================================================= 5 6 # Step 1: Install required packages 7 !pip install qiskit numpy 8 9 # Step 2: Import libraries 10 from qiskit import QuantumCircuit 11 from qiskit.quantum_info import Statevector 12 import numpy as np 13 14 # Step 3: Run Demonstration 15 features = [1.2, 0.7, -0.9, 1.8] 16 print(f'Original Classical Vector: {features}\n') 17 18 # Strategy 1: Angle Encoding (1 qubit per feature -> 4 qubits) 19 qc_angle = QuantumCircuit(4) 20 for i, val in enumerate(features): 21 qc_angle.ry(val, i) # Ry rotation by feature angle 22 print('Strategy 1: Angle Encoding (O(N) qubits):') 23 print(qc_angle.draw('text')) 24 25 # Strategy 2: Amplitude Encoding (log2(N) qubits -> 2 qubits for 4 features) 26 norm = np.linalg.norm(features) 27 norm_features = np.array(features) / norm 28 qc_amp = QuantumCircuit(2) 29 qc_amp.initialize(norm_features, [0, 1]) # Amplitude encoding isometry 30 print('\nStrategy 2: Amplitude Encoding (O(log N) qubits):') 31 print(f'Normalized Amplitudes in 2 Qubits: {norm_features.round(3)}') 32 print(f'Amplitudes verify to exact sum of squares: {np.sum(norm_features**2):.4f}')
Map each feature value directly to a single-qubit rotation angle (Ry) requiring N qubits.
Normalize the vector and encode N features into the 2^n amplitudes of only log2(N) qubits.
Angle encoding uses shallow depth but O(N) qubits; Amplitude encoding achieves exponential compression O(log N) but requires deeper state preparation unitaries.
4-element classical feature vector [1.2, 0.7, -0.9, 1.8].
Angle Encoding: Uses 4 qubits with individual Ry gates. Amplitude Encoding: Compresses all 4 features into only 2 qubits ([0.495, 0.289, -0.371, 0.742]).
Classical-to-quantum encoding is the entry gate of QML. Amplitude encoding achieves logarithmic spatial compression (encoding 1,024 features in 10 qubits), while angle encoding is NISQ-friendly with shallow circuit depth.
Feature maps, ansatz, COBYLA optimization, and complete VQC pipeline.
Test your understanding with these questions. Remember, this is for learning, not examination!