とりあえず書籍の付属コードを実行してみたが・・・n1-highmem-4
なのにめちゃめちゃ遅い・・・。n1-highmem-4
の最新版として e2-highmem-4
というのがあった。preemptible だと旧版のほうが少しだけ安そう。それ以前にMachine families | Compute Engine Documentation | Google Cloudを見ると、GPU をアタッチできるのは、N1 シリーズと A2 シリーズだけらしい・・・。ということで、現状改善できそうにない・・・。
一応はゆっくりと数分かけて 1 つのバッチが消費されつつ
Training [2.5%] Loss: 0.2351 Training [5.0%] Loss: 0.2028 Training [7.5%] Loss: 0.1816 Training [10.0%] Loss: 0.1644 Training [12.5%] Loss: 0.1577 Training [15.0%] Loss: 0.1521 Training [17.5%] Loss: 0.1501 ...
という推移はしているので書籍に掲載している内容と同じではある・・・。数箇所 warning が出ているが修正するとエラーで動かなくなるものもあるので困ったものだ・・・。
Hybrid quantum-classical Neural Networks with PyTorch and Qiskit のサンプルはネットワークがより複雑な分、もっと時間がかかるかもしれない・・・。
とりあえず、上記まで粘って打ち切った結果、
という、何の変哲もない絵が得られ、
Performance on train data: Loss: 0.1484 Accuracy: 98.0%
という結果になった。
MNIST だったら何をやってもこういう精度だし、今回は 0 と 1 なのでなおさらであるが、とりあえずのところは満足することにする。
[2201.01820] A Hybrid Quantum-Classical Neural Network Architecture for Binary Classification を見ても勾配計算のところではパラメータシフト則の話が言及されているな。誤差逆伝播法と違うけど、量子計算ならこちらのほうが良いのだろうか?今のところよく分かっていない・・・。
ちゃんと誤差逆伝播法が使われているが、量子回路の層における “偏微分の断片” がパラメータシフト則で計算されているようだ、というだけだった。パラメータシフト則についてはパラメータシフト則 - らんだむな記憶で触れることにする。