TensorFlow Kuantum (TFQ), NISQ dönemi kuantum makine öğrenimi sorunları için tasarlanmıştır. TensorFlow ekosistemine, kuantum devreleri oluşturmak gibi kuantum hesaplama ilkelleri getiriyor. TensorFlow ile oluşturulan modeller ve işlemler güçlü kuantum-klasik hibrit sistemler oluşturmak için bu ilkelleri kullanır.
TFQ kullanarak araştırmacılar, bir kuantum veri kümesi, bir kuantum modeli ve klasik kontrol parametreleri kullanarak bir TensorFlow grafiği oluşturabilirler. Bunların hepsi tek bir hesaplama grafiğinde tensörler olarak temsil edilir. Klasik olasılıklı olaylara yol açan kuantum ölçümlerinin sonucu TensorFlow ops tarafından elde edilir. Eğitim standart Keras API'sı ile yapılır.
tfq.datasets modülü araştırmacıların yeni ve ilginç kuantum veri kümeleriyle deneme
tfq.datasets olanak tanır.
Cirq
Cirq , Google'dan gelen bir kuantum programlama çerçevesidir. Bir kuantum bilgisayarında veya simüle edilmiş bir kuantum bilgisayarında kuantum devreleri oluşturmak, değiştirmek ve çağırmak için kubitler, kapılar, devreler ve ölçüm gibi tüm temel işlemleri sağlar. TensorFlow Quantum bu Cirq ilkellerini toplu hesaplama, model oluşturma ve degrade hesaplama için TensorFlow'u genişletmek için kullanır. TensorFlow Quantum ile etkili olmak için Cirq ile etkili olmak iyi bir fikirdir.
TensorFlow Quantum ilkelleri
TensorFlow Quantum, TensorFlow'u kuantum bilgi işlem donanımıyla entegre etmek için gereken bileşenleri uygular. TFQ, bu amaçla iki veri tipi ilkesi sunmaktadır:
- Kuantum devresi : Bu,
cirq.Circuitiçindeki Cirq tanımlı kuantum devreleri (
cirq.Circuit) temsil eder. Farklı gerçek değerli veri noktalarının gruplarına benzer şekilde, farklı büyüklükte devrelerin grupları oluşturun.
- Pauli toplamı : Cirq (
cirq.PauliSum) 'da tanımlanan Pauli operatörlerinin tensör ürünlerinin doğrusal kombinasyonlarını temsil eder. Devreler gibi, farklı boyutlarda operatör grupları oluşturun.
Temel operasyonlar
Bir
tf.Tensor içindeki kuantum devre ilkellerini kullanarak, TensorFlow Quantum bu devreleri işleyen ve anlamlı çıktılar üreten operasyonları uygular.
TensorFlow ops optimize C ++ ile yazılmıştır. Bu ops devrelerden örnek alır, beklenti değerlerini hesaplar ve verilen devreler tarafından üretilen durumu verir. Esnek ve performans gösteren operasyonlar yazmanın bazı zorlukları vardır:
- Devreler aynı boyutta değil. Simüle edilmiş devreler için, statik işlemler (
tf.matmulveya
tf.addgibi) oluşturamaz ve sonra farklı boyutlardaki devrelerin yerine farklı sayılar
tf.add. Bu ops, statik olarak boyutlandırılmış TensorFlow hesaplama grafiğinin izin vermediği dinamik boyutlara izin vermelidir.
- Kuantum verileri tamamen farklı bir devre yapısını indükleyebilir. TFQ operasyonlarında dinamik boyutları desteklemenin başka bir nedeni de budur. Kuantum verileri, orijinal devredeki modifikasyonlarla temsil edilen altta yatan kuantum durumunda yapısal bir değişikliği temsil edebilir. Çalışma zamanında yeni veri noktaları takas edildiğinde, TensorFlow hesaplama grafiği oluşturulduktan sonra değiştirilemez, bu nedenle bu değişken yapılar için destek gereklidir.
-
cirq.Circuitshesaplama grafiklerine benzer, çünkü bunlar bir dizi işlemdir ve bazıları semboller / yer tutucular içerebilir. Bunu mümkün olduğunca TensorFlow ile uyumlu hale getirmek önemlidir.
Performans nedenleriyle, Eigen (birçok TensorFlow opinde kullanılan C ++ kütüphanesi) kuantum devre simülasyonu için uygun değildir. Bunun yerine, kuantum üstünlüğü denemesinde kullanılan devre simülatörleri doğrulayıcı olarak kullanılır ve TFQ op'larının temeli olarak genişletilir (tümü AVX2 ve SSE talimatları ile yazılır). Fiziksel bir kuantum bilgisayarı kullanan aynı fonksiyonel imzalara sahip operasyonlar oluşturuldu. Simüle edilmiş ve fiziksel bir kuantum bilgisayarı arasında geçiş yapmak, tek bir kod satırını değiştirmek kadar kolaydır. Bu oplar
circuit_execution_ops.py içinde
circuit_execution_ops.py .
Katmanlar
TensorFlow Quantum katmanları,
tf.keras.layers.Layer arabirimini kullanarak geliştiricilere örnekleme, beklenti ve durum hesaplamasını ortaya
tf.keras.layers.Layer . Klasik kontrol parametreleri veya okuma işlemleri için bir devre katmanı oluşturmak uygundur. Ayrıca, toplu devre, toplu kontrol parametre değerini destekleyen yüksek derecede karmaşıklığa sahip bir katman oluşturabilir ve toplu okuma işlemlerini gerçekleştirebilirsiniz.
tfq.layers.Sample için bkz.
tfq.layers.Sample .
Farklılıklar
Birçok TensorFlow işleminden farklı olarak, kuantum devrelerdeki gözlemlenebilirler, hesaplanması nispeten kolay degradeler için formüllere sahip değildir. Bunun nedeni, klasik bir bilgisayarın yalnızca kuantum bilgisayarda çalıştırılan devrelerden örnekleri okuyabilmesidir.
Bu sorunu çözmek için,
tfq.differentiators modülü çeşitli standart farklılaştırma teknikleri sağlar. Kullanıcılar, hem örnek tabanlı beklenti hesaplamasının “gerçek dünya” ortamında ve analitik kesin dünyada degradeleri hesaplamak için kendi yöntemlerini tanımlayabilirler. Sonlu farklar gibi yöntemler, analitik / kesin bir ortamda genellikle en hızlıdır (duvar saati zamanı). Daha yavaş (duvar saati zamanı) iken, parametre kaydırma veya stokastik yöntemler gibi daha pratik yöntemler genellikle daha etkilidir. Bir
tfq.differentiators.Differentiator örneği ve var olan bir op bağlı
generate_differentiable_op veya yapıcısına iletilmiş
tfq.layers.Expectation veya
tfq.layers.SampledExpectation . Özel bir ayırıcı uygulamak için,
tfq.differentiators.Differentiator sınıfından miras alın. Örnekleme veya durum vektörü hesaplaması için gradyan işlemi tanımlamak için
tf.custom_gradient kullanın.
Veri Setleri
Kuantum hesaplama alanı büyüdükçe, daha fazla kuantum veri ve model kombinasyonları ortaya çıkacak ve yapılandırılmış karşılaştırmayı zorlaştıracaktır.
tfq.datasets modülü, kuantum makine öğrenimi görevleri için veri kaynağı olarak kullanılır. Model ve performans için yapısal karşılaştırmalar sağlar.
Büyük topluluk katkılarıyla,
tfq.datasets modülünün daha şeffaf ve tekrarlanabilir araştırmalara olanak tanıyacak şekilde büyüyeceği
tfq.datasets . Dikkatle seçilmiş problemler: kuantum kontrolü, fermiyonik simülasyon, faz geçişlerine yakın sınıflandırma, kuantum algılama, vb.
tfq.datasets .
tfq.datasets için mükemmel adaylardır. Yeni bir veri kümesi önermek için GitHub sorununu açın.