1. ホーム
  2. javascript

node 用の numpy ライクなパッケージ [終了].

2023-10-28 01:31:41

質問

Pythonの開発に携わっている間、ndarrayをループして何かをするコードを、配列全体を一度に処理するnumpy関数で書き直すと、どれだけ物事が速くなるかにいつも驚かされてきました。最近、私はますますnodeに乗り換えつつあり、同じようなものを探しています。今のところ、私はいくつかのものを見つけましたが、どれも有望には見えません。

  • scikit-node(スキキットノード は、pythonでscikit-learnを実行し、nodeとのインタフェースを提供します。私は試していませんが、私が望むような最先端のスピードが得られるとは思っていません。
  • javascriptのマトリックスライブラリには、かなり古いものと新しいものがあります ( sylvester , グラマトリックス , ...). 4x4より大きな行列(3Dレンダリングで最も有用です)でうまく動作するかどうかわからないことに加えて、これらはネイティブのjavascriptであるようです(そしていくつかは、これらはわかりませんが、webGLアクセラレーションを使用しています)。ブラウザ上では素晴らしいですが、ノード上ではそうではありません。

私の知る限り、npmsはC++で書くことができます。なぜnode用のnumpyライクなライブラリがないのか不思議です。そのようなパワーを必要とするコミュニティから、node に対する関心がまだ十分でないだけなのでしょうか。ES6の機能(リスト内包)により、javascriptコンパイラがネイティブJSコードをC++の速度に自動的にベクトル化できるようになるという希望があるのでしょうか?私はおそらく何か他のものを見逃しているのでしょうか?

編集 close-voteに対応しています。注意:私は xyz を行うための最良のパッケージは何かを尋ねているのではありません。私はただ、node上でこれを行うパッケージがない技術的な理由があるのか、社会的な理由があるのか、あるいは全く理由がなく、私が見逃しているパッケージがあるのか、疑問に思っているだけなのです。あまりに多くの意見的な批判を避けるためかもしれませんが、私は知りたいのです。私は100×100の行列を10000個ほど持っています。それらを一緒に追加するための最良の(※修正、合理的な高速)方法は何ですか?

編集2 さらに調べてみると、私が間違ったことをググっていたことが判明しました。node.js scientific computing"でググると、いくつかの非常に興味深いノートへのリンクがあります。

基本的に今理解している限りでは、今のところ誰も気にしていないようです。また、js TypedArraysにはいくつかの大きな欠落(64bit intなど)があるため、エンジン自体をハックするのではなく、NPMを使用して良いサポートを追加することは難しいかもしれません---これは目的を失うことになります。そしてまた、私はこの最後のステートメントをさらに調査していません。

どのように解決するのですか?

ここでは、Googleの TensorFlow.js (以前は https://deeplearnjs.org ) は、まさにそれを実現し、WebGL を使用して GPU 上で深いニューラルネットワークを訓練する機能を内蔵しています。また TensorFlow モデルを移植することもできます。 .

これがディープラーニングのためだけのものだと騙されないでください。これは、GPUアクセラレーションを内蔵した本格的な数値計算プラットフォームです。NumPy(やTensorflow Eager、PyTorchなど)のように、Tensorflowのように定義してから実行するモデルではなく、eager "execute as you go"というモデルに従っています。そのため、NumPyを使ったことがある人であれば、自然に使えると感じるはずです。

とても参考になるGithubのレポはこちらです。

https://github.com/tensorflow/tfjs-core (旧リンクの https://github.com/PAIR-code/deeplearnjs がそこにリダイレクトされるようになりました)