PennyLaneでアヤメのデータを2値分類する
機械学習でアヤメの分類を行います。
前回ステップ1まで実行したのでステップ2を行ってみます。
ステップ2:量子回路の部分を実装
layerメソッドで量子回路の1層分の量子ゲートを作成しています。
引数Wは重みを表すパラメータです。
2個のROTゲートと1個のゲートを組み合わせて1層としています。
#量子回路の1層分
def layer(W):
qml.Rot(W[0,0], W[0,1], W[0,2], wires=0)
qml.Rot(W[1,0], W[1,1], W[1,2], wires=1)
qml.CNOT(wires=[0,1])
@qml.qnode(dev)
def circuit(weights,angles):
statepreparation(angles)
for W in weights:
layer(W)
return qml.expval(qml.PauliZ(0))
量子回路を可視化します。
from pennylane.math import requires_grad
num_qubits = 2
num_layers = 6
weights = 0.01 *np.random.randn(
num_layers,num_qubits,3,requires_grad=False)
x = np.array(
[ 0.53896774 , 0.79503606 , 0.27826503 , 0.0 ] ,
requires_grad=False)
ang = get_angles(x)
flg,ax = qml.draw_mpl(circuit)(weights,ang)
fig.show()
実行したところ、MatPlotlibから非推奨です。というWarningが...。
まあ、表示されたのでそのまま進めます。
量子回路の可視化を実行して表示された図で、前半の部分はステップ1の符号化の個所です。
(以下の部分)