本頁面由 Cloud Translation API 翻譯而成。
Switch to English

TensorFlow Quantum設計

TensorFlow Quantum(TFQ)專為NISQ時代的量子機器學習問題而設計。它將量子計算原語(如構建量子電路)帶入TensorFlow生態系統。使用TensorFlow構建的模型和操作使用這些原語來創建功能強大的量子古典混合系統。

使用TFQ,研究人員可以使用量子數據集,量子模型和經典控制參數來構建TensorFlow圖。這些都在單個計算圖中表示為張量。 TensorFlow ops獲得了導致經典概率事件的量子測量結果。培訓使用標準的Keras API完成。 tfq.datasets模塊允許研究人員嘗試新的有趣的量子數據集。

Cirq

Cirq是Google的量子編程框架。它提供了所有基本操作(例如量子位,門,電路和測量),以在量子計算機或模擬量子計算機上創建,修改和調用量子電路。 TensorFlow Quantum使用這些Cirq原語來擴展TensorFlow,以進行批處理計算,模型構建和梯度計算。為了與TensorFlow Quantum一起有效,與Cirq一起有效是一個好主意。

TensorFlow Quantum基本體

TensorFlow Quantum實現了將TensorFlow與量子計算硬件集成所需的組件。為此,TFQ引入了兩個數據類型原語:

  • 量子電路 :這表示TensorFlow中Cirq定義的量子電路( cirq.Circuit )。創建不同大小的電路批次,類似於不同的實值數據點的批次。
  • Pauli sum :表示在Cirq( cirq.PauliSum )中定義的Pauli運算符的張量積的線性組合。像電路一樣,創建一批大小不同的運算符。

基本操作

TensorFlow Quantum使用tf.Tensor的量子電路圖元實現了處理這些電路並產生有意義的輸出的操作。

TensorFlow操作使用優化的C ++編寫。這些運算從電路採樣,計算期望值,並輸出給定電路產生的狀態。編寫靈活而高效的操作會遇到一些挑戰:

  1. 電路尺寸不一樣。對於模擬電路,您無法創建靜態操作(例如tf.matmultf.add ),然後用不同的數字替換不同大小的電路。這些操作必須允許使用靜態大小的TensorFlow計算圖不允許的動態大小。
  2. 量子數據可以完全引起不同的電路結構。這是在TFQ ops中支持動態大小的另一個原因。量子數據可以表示對基礎量子態的結構變化,該變化由對原始電路的修改來表示。由於在運行時交換新數據點時,TensorFlow計算圖在構建後無法修改,因此需要支持這些不同的結構。
  3. cirq.Circuits與計算圖相似,因為它們是一系列操作,有些可能包含符號/佔位符。重要的是使其與TensorFlow盡可能兼容。

由於性能原因,Eigen(許多TensorFlow操作中使用的C ++庫)不適用於量子電路仿真。取而代之的是,將量子至上實驗中使用的電路仿真器用作驗證器,並擴展為TFQ ops的基礎(均使用AVX2和SSE指令編寫)。使用物理量子計算機創建具有相同功能簽名的操作。在模擬和物理量子計算機之間切換就像更改一行代碼一樣容易。這些操作位於circuit_execution_ops.py

層數

TensorFlow Quantum層使用tf.keras.layers.Layer接口向開發人員提供採樣,期望和狀態計算。創建用於經典控制參數或讀取操作的電路層很方便。此外,您可以創建具有高度複雜性的圖層,以支持批處理電路,批處理控制參數值以及執行批讀取操作。有關tfq.layers.Sample ,請參見tfq.layers.Sample

差異化因素

與許多TensorFlow操作不同,量子電路中的可觀察對像沒有相對容易計算的梯度公式。這是因為傳統計算機只能從量子計算機上運行的電路中讀取樣本。

為了解決此問題, tfq.differentiators模塊提供了幾種標準的區分技術。用戶還可以定義自己的方法來計算梯度-在基於樣本的期望計算的“真實世界”設置和精確的分析世界中。在分析/精確環境中,像有限差分之類的方法通常是最快的(掛鐘時間)。儘管比較慢(掛鐘時間),但更實用的方法(例如參數移位隨機方法)通常更有效。將tfq.differentiators.Differentiator實例化並使用generate_differentiable_op附加到現有的op,或傳遞給tfq.layers.Expectationtfq.layers.SampledExpectation的構造tfq.layers.SampledExpectation 。要實現自定義區分tfq.differentiators.Differentiator ,請繼承tfq.differentiators.Differentiator類。要定義用於採樣或狀態向量計算的梯度運算,請使用tf.custom_gradient

數據集

隨著量子計算領域的發展,將會出現更多的量子數據和模型組合,從而使結構化比較變得更加困難。 tfq.datasets模塊用作量子機器學習任務的數據源。它確保對模型和性能進行結構化比較。

希望隨著社區的大量貢獻, tfq.datasets模塊將不斷發展,以使研究更加透明和可重現。精心設計的問題包括:量子控制,鐵電模擬,相變附近的分類,量子感測等,都是添加到tfq.datasets 。要提出新的數據集,請打開GitHub問題