Introducció a TensorFlow Quantum
TensorFlow Quantum (TFQ) és una biblioteca de codi obert desenvolupada per Google en col·laboració amb el grup de recerca de computació quàntica de la Universitat de Waterloo. TFQ està dissenyat per a la investigació i el desenvolupament d'algoritmes de machine learning quàntic. Combina la potència de TensorFlow amb simuladors de circuits quàntics i ordinadors quàntics reals.
Objectius d'aquest tema:
- Entendre què és TensorFlow Quantum i per què és important.
- Aprendre a configurar l'entorn per treballar amb TFQ.
- Familiaritzar-se amb els conceptes bàsics de la computació quàntica.
- Crear i executar circuits quàntics simples amb TFQ.
- Integrar circuits quàntics amb models de machine learning clàssics.
Què és TensorFlow Quantum?
TensorFlow Quantum és una extensió de TensorFlow que permet la creació, simulació i optimització de circuits quàntics. TFQ facilita la integració de la computació quàntica amb el machine learning clàssic, permetent als investigadors explorar nous algoritmes híbrids quàntic-clàssics.
Característiques clau:
- Integració amb TensorFlow: Utilitza la mateixa API de TensorFlow, facilitant la integració amb models de machine learning existents.
- Simulació de circuits quàntics: Permet simular circuits quàntics en ordinadors clàssics.
- Execució en hardware quàntic: Suporta l'execució de circuits en ordinadors quàntics reals.
Configuració de l'entorn
Requisits previs:
- Python 3.6 o superior
- TensorFlow 2.1 o superior
Instal·lació de TensorFlow Quantum
Verificació de la instal·lació
import tensorflow as tf import tensorflow_quantum as tfq print("TensorFlow version:", tf.__version__) print("TensorFlow Quantum version:", tfq.__version__)
Conceptes bàsics de la computació quàntica
Qubits
Un qubit és l'analogia quàntica del bit clàssic. Mentre que un bit clàssic pot estar en un estat de 0 o 1, un qubit pot estar en una superposició d'aquests estats.
Operacions quàntiques
Les operacions quàntiques són transformacions que es poden aplicar als qubits. Algunes de les operacions més comunes són:
- Porta Hadamard (H): Crea una superposició.
- Porta Pauli-X (X): Actua com un NOT quàntic.
- Porta Pauli-Z (Z): Inverteix la fase del qubit.
Circuits quàntics
Un circuit quàntic és una seqüència d'operacions quàntiques aplicades a un conjunt de qubits. Els circuits quàntics es poden representar mitjançant diagrames de circuits.
Creació i execució de circuits quàntics amb TFQ
Creació d'un circuit quàntic simple
import cirq import tensorflow_quantum as tfq # Definim un qubit qubit = cirq.GridQubit(0, 0) # Creem un circuit quàntic circuit = cirq.Circuit( cirq.H(qubit), # Aplicar la porta Hadamard cirq.measure(qubit, key='result') # Mesurar el qubit ) print(circuit)
Simulació del circuit
# Creem un simulador simulator = cirq.Simulator() # Executem el circuit result = simulator.run(circuit, repetitions=1000) # Mostrem els resultats print(result.histogram(key='result'))
Integració amb TensorFlow
# Convertim el circuit a un tensor de TensorFlow Quantum circuit_tensor = tfq.convert_to_tensor([circuit]) # Definim un model simple de TensorFlow model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(), dtype=tf.dtypes.string), tfq.layers.PQC(circuit, cirq.Z(qubit)) ]) # Compilem el model model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.MeanSquaredError()) # Mostrem el resum del model model.summary()
Exercicis pràctics
Exercici 1: Crear un circuit quàntic amb dues portes Hadamard
Objectiu: Crear un circuit quàntic que aplica dues portes Hadamard a un qubit i mesura el resultat.
# Definim un qubit qubit = cirq.GridQubit(0, 0) # Creem un circuit quàntic amb dues portes Hadamard circuit = cirq.Circuit( cirq.H(qubit), cirq.H(qubit), cirq.measure(qubit, key='result') ) print(circuit) # Simulem el circuit simulator = cirq.Simulator() result = simulator.run(circuit, repetitions=1000) print(result.histogram(key='result'))
Solució
# Definim un qubit qubit = cirq.GridQubit(0, 0) # Creem un circuit quàntic amb dues portes Hadamard circuit = cirq.Circuit( cirq.H(qubit), cirq.H(qubit), cirq.measure(qubit, key='result') ) print(circuit) # Simulem el circuit simulator = cirq.Simulator() result = simulator.run(circuit, repetitions=1000) print(result.histogram(key='result'))
Exercici 2: Integrar un circuit quàntic amb un model de TensorFlow
Objectiu: Crear un model de TensorFlow que integri un circuit quàntic simple i entrenar-lo amb dades sintètiques.
# Definim un qubit qubit = cirq.GridQubit(0, 0) # Creem un circuit quàntic circuit = cirq.Circuit( cirq.H(qubit), cirq.measure(qubit, key='result') ) # Convertim el circuit a un tensor de TensorFlow Quantum circuit_tensor = tfq.convert_to_tensor([circuit]) # Definim un model simple de TensorFlow model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(), dtype=tf.dtypes.string), tfq.layers.PQC(circuit, cirq.Z(qubit)) ]) # Compilem el model model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.MeanSquaredError()) # Generem dades sintètiques import numpy as np x_train = circuit_tensor y_train = np.array([1.0]) # Entrenem el model model.fit(x_train, y_train, epochs=10)
Solució
# Definim un qubit qubit = cirq.GridQubit(0, 0) # Creem un circuit quàntic circuit = cirq.Circuit( cirq.H(qubit), cirq.measure(qubit, key='result') ) # Convertim el circuit a un tensor de TensorFlow Quantum circuit_tensor = tfq.convert_to_tensor([circuit]) # Definim un model simple de TensorFlow model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(), dtype=tf.dtypes.string), tfq.layers.PQC(circuit, cirq.Z(qubit)) ]) # Compilem el model model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.MeanSquaredError()) # Generem dades sintètiques import numpy as np x_train = circuit_tensor y_train = np.array([1.0]) # Entrenem el model model.fit(x_train, y_train, epochs=10)
Conclusió
En aquest tema, hem explorat TensorFlow Quantum, una poderosa eina per a la investigació en machine learning quàntic. Hem après a configurar l'entorn, crear circuits quàntics simples i integrar-los amb models de TensorFlow. A mesura que la tecnologia quàntica avança, TFQ ofereix una plataforma robusta per explorar nous algoritmes híbrids quàntic-clàssics.
Curs de TensorFlow
Mòdul 1: Introducció a TensorFlow
- Què és TensorFlow?
- Configuració de TensorFlow
- Conceptes bàsics de TensorFlow
- Hola món amb TensorFlow
Mòdul 2: Conceptes bàsics de TensorFlow
Mòdul 3: Gestió de dades a TensorFlow
Mòdul 4: Construcció de xarxes neuronals
- Introducció a les xarxes neuronals
- Creació d'una xarxa neuronal simple
- Funcions d'activació
- Funcions de pèrdua i optimitzadors
Mòdul 5: Xarxes neuronals convolucionals (CNNs)
Mòdul 6: Xarxes neuronals recurrents (RNNs)
- Introducció a les RNNs
- Construcció d'una RNN
- Memòria a llarg termini (LSTM)
- Unitats recurrents amb porta (GRUs)
Mòdul 7: Tècniques avançades de TensorFlow
- Capes i models personalitzats
- TensorFlow Hub
- Aprenentatge per transferència
- Ajust de hiperparàmetres