問題タブ [mtj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Matrix Toolkit Java での行列の構築
Matrix Toolkit Java (MTJ)に関して、かなり単純な質問がMatrix B
ありdouble[][] A
ます。
ライブラリ内の原因は、 classではなくMatrix
単なるinterfaceです。
編集
それで、オブジェクトを直接定義することが可能であるJAMA
ため、「MTJ」があれば問題は解決すると思いましたが、うまくいきませんでした。JAMA
Matrix
私のコードはこれです:
java.util.Arrays をインポートします。ジャマを輸入。; no.uib.cipr.matrix をインポートします。;
しかし、それは JAMA s
Matrix concept and MTJ's
Matrix` 定義間の明らかな矛盾に解決されます。
どうすれば問題を解決できますか?
java - MTJ/Netlib (ネイティブ) を使用した行列乗算のパフォーマンスが遅い
サイズ 5000x5000 の大きな行列を 20000x20000 まで乗算する必要があります。スパース行列を持ちながら高速乗算を実行できるライブラリを見つけるのに問題があります。
まず、Java 行列ライブラリのパフォーマンスに関する以前の質問 ( Java 行列数学ライブラリのパフォーマンス? ) を読みました。そこでの上位の回答に基づいて、最速の 1 つである JBLAS を使用することにしました。私の場合、5000x5000 の行列を乗算するのに約 50 秒ほどかかりました。これは、Matlab よりもかなり遅いですが、それでも許容範囲です。
問題は、マトリックスが非常に大きくなる可能性があることです (最大 20k x 20k、またはそれ以上) が、通常は疎です。行列の要素の 30% だけが非ゼロです。JBLAS は疎行列の実装を提供しないため、大規模な密行列を格納するために必要なメモリ フットプリントは非常に大きくなる可能性があります。MTJ/Netlib は、疎行列を持つベンチマークで優れたライブラリの 1 つであるはずなので、MTJ/Netlib に切り替えてみました。ここのメモ ( https://github.com/fommil/netlib-java/ ) には、最高のパフォーマンスを得るには、自分のマシンでネイティブ BLAS をコンパイルする必要があると書かれています。そこで、OpenBLAS をダウンロードし、コンパイルしてインストールしました。また、いくつかのコマンドを実行して、Ubuntu 13.10 で OpenBLAS ライブラリを設定します。
最後の update-alternatives ステップで、コンパイル済みの OpenBLAS ライブラリを選択しました。この後、Netlib がコンパイル済みの OpenBLAS ライブラリを取得して使用すると仮定します。また、 http: //r.research.att.com/benchmarks/R-benchmark-25.R からいくつかのベンチマークを実行し、前 (ubuntu のデフォルトの blas を使用) と後 (私の使用コンパイルされた OpenBLAS)。
ただし、MTJ での行列と行列の乗算のパフォーマンスは依然として非常に遅いです。たとえば、A = 5824x5824、W = 5824x4782 の 2 つの行列があります。Javaでこのように掛けます
コードは現在 45 分以上実行されており、この投稿全体を入力するのに十分ですが、まだ終了していません。JBLAS を使用すると、同じ行列の乗算に 1 分もかかりません。私が逃したものはありますか?
ありがとう !
java - MTJで行ベクトルと行列を乗算する方法は?
V
行ベクトルに行列を掛けてベクトルM
を取得したいV'
、つまり
MTJでそれを行うにはどうすればよいですか?インターフェイスVector
にはメソッドがないようですmultiply
。
java - Matrix Toolkits Java および Netlib-Java のドキュメントはどこにありますか?
私は Java 用の高速マトリックスと BLAS ライブラリをインストールすることに着手し、 Java Matrix Benchmarkの結果に基づいて MTJ (netlib-java によってサポートされている) に落ち着きました。Maven 経由ですべてをインストールしたと思いますが、これらのライブラリに関する信頼できるドキュメントが見つかりません。
論理的な出発点は、github ページです。
...しかし、Github の信じられないほど簡潔な MTJ wiki セクション以外に、チュートリアルや javadoc へのリンクが見つかりません。Netlib のソースは (コンパイル ステップとして F2J を使用して) fortran にあるように見えるので、javadoc の代わりにソースを直接クロールすることもできません。
さらに不可解なことに、何らかの理由でドイツの大学によってホストされているMTJ用のある種のJavadocがあり、MTJライブラリの一部ではないように見えるパッケージ(nni.BLASなど)を参照しているようです。 Maven が私のために作ってくれました。テネシー大学内のどこかにホストされている別のさらに大雑把な Javadocがあり、netlib-java プロジェクトとの明らかな関連性はありませんが、netlib-java の DGEMV 実装が使用する 3 つの追加の整数引数 (オフセットある種の?)。DGEMVの netlib-java ディストリビューション内の fortran ドキュメントを見ると、DGEMVに期待される 11 の標準引数が含まれています。
だからここに私の質問があります:
1.) MTJ/netlib の公式ドキュメントはありますか? もしそうなら、どこですか?
2.) 公式ドキュメントがない場合、誰かがこのライブラリの使い方を学ぶことができる他のリソースはありますか? このプロジェクトが開発者だけによって使用されていない場合、人々は何らかの方法で使用することを学んでいます。どのように?
3.) netlib の 11 引数の DGEMV の Java バージョンが Maven を介して MTJ の一部としてインストールされていない場合、私のハード ドライブにあるこの 14 引数のものは何ですか?
ありがとう。
gradle - Gradle が pom 型の依存関係を解凍しようとしています
私のプロジェクトでは、次のように指定する Java マトリックス ライブラリ MTJ に依存していますbuild.gradle
。
MTJ は netlib に依存しています。より具体的には、'com.github.fommil.netlib:all:1.1.2'
上記で明示的に compile を追加するのと同じです。
gradleビルドを実行すると。次のエラーが表示されます。
したがって、どういうわけかgradleは混乱し、ファイルが他の依存関係を指す単なるpomである場合、ファイルをzipファイルとして扱います。
誰かが修正を持っているか、回避策を知っていますか?
java - MTJマトリックスをCSVまたは他のテキスト形式に出力する方法は?
コンテキスト: MTJ マトリックスを Python にエクスポートする必要があります。CSV にエクスポートしてから、Python から CSV を再インポートするのが最善のようです。
MTJ マトリックスを CSV にエクスポートする方法は? 見逃したライブラリのメソッドはありますか? それとも手でやる以外の方法ですか?
java - 行列を大きくする
私は自分の論文のニューラル ネットワーク プロジェクトに MatrixToolkitsJava を使用しています。その中で、重み行列を大きくし、後で潜在的に小さくする必要があります。私が現在これを行っている方法、つまり新しいマトリックスを作成し、新しい値をインスタンス化しながら既存の値をコピーする方法は、非常に非効率的であり、ほとんどの時間を占めています。既存の行列に行と列を追加する効率的な方法はありますか?