NAGAOKA Yuta

Results 39 comments of NAGAOKA Yuta

いま skqulacs のコード読んでて手が止まってるのでやってもらっても大丈夫です 🙆

[ikanago/arxiv-2112.15002](https://github.com/Qulacs-Osaka/scikit-qulacs/tree/ikanago/arxiv-2112.15002) にやりかけのコードがあるので参考にしたりしなかったりしてください

論文に直接リンクがなかったので,wine dataset のリンク貼っときます: https://archive-beta.ics.uci.edu/ml/datasets/wine

いまあるパラメータのリストを pickle に固める機能は廃止しますか? 消すとしても次のリリースでは warning を出しつつ残しておいて,その次のリリースで消す流れになると思います.

numpy を置き換えて GPU や vectorization で高速化する [jax](https://jax.readthedocs.io/en/latest/index.html) というライブラリがあります. クラスタに対応してるかは分からないのですが,CPU の環境でも置き換えるだけで速くなるかも含めて今度調べてみます.

ありがとうございます. scikit-qulacs の JAX 版を別で作ると大変なので,高速化できることが確認できたら numpy を完全に置き換えてもよさそうです.

ただ,scikit-qulacs では入出力のデータ表現として numpy を使っているだけで,行列演算は qulacs-osaka が Eigen で行っているので,jax を使うメリットが薄いようにも感じました.

↑の issue を実装して qulacs-osaka の新バージョンがリリースされるまで待ってもらうことになりそうです

#192 ですが,実は問題なさそうです. 少し整理します: `PrametricQuantumCircuit::merge_circuit()` が [`PrametricQuantumCircuit::add_gate_copy(const QuantumGateBase* gate, UINT index)`](https://github.com/Qulacs-Osaka/qulacs-osaka/blob/dev/src/vqcsim/parametric_circuit.cpp#L132) を呼んでいると思っていました. このメソッドはコピーした `gate` を `index` の位置に挿入して `index` より後ろにもともと存在したゲートの位置を1つ後ろにずらします. このとき `LearningCircuit` 内の共有されたパラメータの位置がずれそうだという問題がありました. しかしよくよく見ると,`PrametricQuantumCircuit::merge_circuit()` が呼んでいるのは `PrametricQuantumCircuit::add_gate_copy(const QuantumGateBase* gate)` で,これは単にコピーしたゲートを append するだけなので既存のゲートには影響しません. よって,`LearningCircuit.merge_circuit()`...

`LearningCircuit` の実装を把握している人を増やした方がいいので @herring101 にやってもらえないかなと思うんですが,どうですか? 自分以外の人が読んでわかりやすいコメントを書けているかも気になるので...