3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PennyLaneのtemplate circuits

Posted at

はじめに

量子プログラミング用SDKであるPennyLaneには、template circuitsがいくつも用意されています。
非常に便利な機能です。
PennyLaneの公式APIドキュメントでも説明されています1が、
具体的にパラメータを設定したときにどんな回路になるか想像するのはやや難しいです。
かつ、PennyLaneのデフォルトの回路図示機能はasciiのみで、なかなか見にくいです。

確かにPennyLane自体には高度な図示機能はないですが、qiskitに変換し、qiskitのdraw機能を使うことが出来ます。2
この機能で具体的に図示することで、templateがどうなっているのか納得したいと思います。

qiskit経由での可視化

pip install

pip install pennylane-qiskit

import

import pennylane as qml
from pennylane import numpy as np

backend(今回はqiskit)の指定と回路作成

dev = qml.device("qiskit.aer", wires=1)

@qml.qnode(dev)
def f(x):
    qml.RX(x, wires=0)
    return qml.expval(qml.PauliZ(0))

f(0.3)

可視化

dev._circuit.draw('mpl')

image.png

確かに可視化が出来ました。

templatesを可視化してみる

3 qubits,1 layerとします。

AngleEmbedding


n_qubits = 3
n_layers = 1

dev = qml.device("qiskit.aer", wires=n_qubits)

weights = np.random.rand(n_layers, n_qubits,3)*(2*np.pi)
x = np.ones(n_qubits)*np.pi

@qml.qnode(dev)
def circ(x):
    qml.templates.AngleEmbedding(x, wires=range(n_qubits),rotation='X')
    return qml.expval(qml.PauliZ(0))

circ(x)

dev._circuit.draw('mpl')

image.png

入力パラメータをRXゲートの回転角度とする回路になっていますね。

AmplitudeEmbedding

x = np.ones(2**n_qubits)*np.pi
qml.templates.embeddings.AmplitudeEmbedding(x, wires=range(n_qubits), normalize='true')

image.png

入力パラメータを量子状態振幅としてsetする回路です。

BasicEntanglerLayers

weights = np.random.rand(n_layers, n_qubits)*(2*np.pi)
qml.templates.layers.BasicEntanglerLayers

image.png

RX→CNOT(あらゆる隣接ビット間) となっています。

StronglyEntanglingLayers

weights = np.random.rand(n_layers, n_qubits,3)*(2*np.pi)
qml.templates.StronglyEntanglingLayers(weights, wires=range(n_qubits))

image.png

RZ→RY→RZ→CNOT(あらゆる隣接ビット間) となっています。

まとめ

この応用で、好きな回路を可視化できます。
qiskitの回路図で表示できると、かなり便利ではないでしょうか。
デバッグに大活躍です。

  1. https://pennylane.readthedocs.io/en/stable/introduction/templates.html

  2. これを探すのに結構苦労しました・・・。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?