Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

disegno tensorflow Quantum

Tensorflow Quantum (TFQ) è progettato per i problemi di machine learning quantistica NISQ-era. Essa porta Quantum Computing primitive-come la costruzione di circuiti quantistici-all'ecosistema tensorflow. I modelli e le operazioni realizzate con tensorflow utilizzano queste primitive per creare potenti sistemi ibridi quantistici-classica.

Utilizzando TFQ, i ricercatori possono costruire un grafico tensorflow utilizzando un set di dati quantistico, un modello quantico, e parametri di controllo classici. Questi sono tutti rappresentati come tensori in un unico grafico computazionale. Il risultato di misurazione quantistica leader a probabilistici classici eventi-op si ottiene tensorflow. La formazione è fatta con lo standard Keras API. Il tfq.datasets modulo permette ai ricercatori di sperimentare di nuovo e interessante serie di dati quantistica.

Cirq

Cirq è un framework di programmazione quantistica da parte di Google. Esso fornisce tutte le operazioni-fondamentale come qubit, cancelli, circuiti e su misure per creare, modificare e richiamare circuiti quantistici su un computer quantistico, o un computer quantistico simulato. Tensorflow Quantum utilizza queste primitive Cirq estendere tensorflow per il calcolo batch, costruzione del modello, e il calcolo del gradiente. Per essere efficace con tensorflow Quantum, è una buona idea di essere efficace con Cirq.

primitive tensorflow Quantum

Tensorflow Quantum implementa i componenti necessari per integrare tensorflow con quantistica hardware di calcolo. A tal fine, TFQ introduce due primitive tipo di dati:

  • Circuito quantistico: Rappresenta Cirq -defined circuiti quantistici ( cirq.Circuit ) all'interno tensorflow. Creare gruppi di circuiti di varie dimensioni, simili a partite di diverse datapoints a valori reali.
  • Somma pauli: rappresentano combinazioni lineari di prodotti tensoriali di operatori Pauli definiti Cirq ( cirq.PauliSum ). Come circuiti, creare batch di operatori di varie dimensioni.

ops fondamentali

Utilizzando le primitive circuito quantistico di un tf.Tensor , tensorflow Quantum utensileria op che elaborano questi circuiti e producono uscite significative.

I ops tensorflow sono scritte in C ++ ottimizzato. Questi ops campione da circuiti, valori attesi calcolare e uscita stato prodotto dai circuiti indicati. Scrivendo ops che sono flessibili e performante ha alcune sfide:

  1. Circuiti che non hanno le stesse dimensioni. Per i circuiti simulati, non si riesce a creare operazioni statiche (come tf.matmul o tf.add ) e quindi sostituire numeri diversi per circuiti di diverse dimensioni. Questi ops devono consentire dimensioni dinamiche che la dimensione staticamente grafico tensorflow calcolo non consente.
  2. dati quantici possono indurre una struttura circuitale completamente diverso. Questo è un altro motivo per sostenere dimensioni dinamiche nei ops TFQ. dati quantici possono rappresentare un cambiamento strutturale allo stato quantistico sottostante rappresentato da modifiche al circuito originale. Come nuovi datapoints vengono messe e tolte in fase di esecuzione, il grafico tensorflow calcolo non può essere modificato dopo che è stato costruito, quindi è richiesto il supporto per queste strutture diverse.
  3. cirq.Circuits sono simili per calcolare grafici in quanto sono una serie di operazioni-e alcuni potrebbero contenere simboli / segnaposti. E 'importante fare questo come compatibile con tensorflow possibile.

Per motivi di prestazioni, Eigen (libreria C ++ utilizzato in molti ops tensorflow) non è adatto per la simulazione del circuito quantistico. Invece, i simulatori di circuiti utilizzati nella sperimentazione dei quanti supremazia sono usati come verificatori ed estese come fondamento della ops TFQ (tutti scritti con le istruzioni AVX2 e SSE). Ops con firme funzionali identici sono stati creati che l'uso di un computer quantistico fisico. Commutazione tra un computer quantistico simulata e fisico è facile come cambiare una sola linea di codice. Questi ops si trovano nella circuit_execution_ops.py .

Livelli

Strati tensorflow Quantum espongono campionamento, attesa, e il calcolo dello stato di sviluppatori che utilizzano il tf.keras.layers.Layer interfaccia. È conveniente per creare uno strato di circuito per parametri di controllo classiche o per le operazioni di lettura. Inoltre, è possibile creare un livello con un alto grado di complessità circuitale supporto batch, il valore del parametro di controllo batch, ed eseguire operazioni di lettura batch. Vedere tfq.layers.Sample per un esempio.

Elementi distintivi

A differenza di molte operazioni tensorflow, osservabili nei circuiti quantistici non hanno formule per pendenze che sono relativamente facili da calcolare. Questo perché un computer classico può leggere solo i campioni dai circuiti che vengono eseguiti su un computer quantistico.

Per risolvere questo problema, il tfq.differentiators modulo fornisce diverse tecniche di differenziazione standard. Gli utenti possono anche definire il proprio metodo per calcolare i gradienti-sia nel “mondo reale” impostazione di calcolo aspettativa basata su campioni, e il mondo esatto analitica. Metodi come differenze finite sono spesso il più veloce (tempo di orologio da parete) in un ambiente analitica / esatto. Mentre più lento (tempo di orologio da parete), metodi più pratici come cambiamento dei parametri o metodi stocastici sono spesso più efficaci. Un tfq.differentiators.Differentiator è un'istanza e collegato ad un op esistente con generate_differentiable_op , o passa al costruttore di tfq.layers.Expectation o tfq.layers.SampledExpectation . Per implementare un elemento di differenziazione personalizzato, ereditare dalla tfq.differentiators.Differentiator di classe. Per definire un'operazione gradiente per il campionamento o lo stato calcolo vettoriale, uso tf.custom_gradient .

Dataset

Poiché il campo della computazione quantistica cresce, più combinazioni di dati quantistica e modello sorgeranno, rendendo il confronto strutturato più difficile. Il tfq.datasets modulo viene utilizzato come fonte di dati per compiti di apprendimento della macchina quantistica. Assicura confronti strutturati per il modello e le prestazioni.

Si spera che con grandi contributi della comunità, il tfq.datasets modulo crescerà per consentire la ricerca che è più trasparente e riproducibile. Attentamente curata problemi: il controllo quantistica, simulazione fermionico, le transizioni di fase nei pressi di classificazione, di rilevamento quantistica, ecc sono tutti ottimi candidati per l'aggiunta di tfq.datasets . Per proporre un nuovo set di dati aprire un problema di GitHub .