問題タブ [dot-product]
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.
ruby-on-rails - Ruby on RailsでRedisを使用して、2つのハッシュの内積を効率的に取得するにはどうすればよいですか?
token_vector私は(ハッシュ)と呼ばれる機能テーブルのデータベースにこのようなデータ構造を持っています:
これらの機能は25個あります。まず、次のようにデータをRedisに入力しましたscript/console。
TokenVector.to_json最初にハッシュをJSON形式に変換します。Redisに保存されている25個のJSONハッシュは約8MBを占めます。
と呼ばれるメソッドがありAnalysis#locateます。このメソッドは、2つのtoken_vector間の内積を取ります。ハッシュのドット積は次のように機能します。
ハッシュ内の重複する各キー(この場合は、dではなくa、b、およびc)の値がペアごとに乗算され、合計されます。
ainの値hash1は1、inの値aはhash24です。これらを乗算して。を取得します1*4 = 4。
binの値hash1は2、inの値bはhash25です。これらを乗算して。を取得します2*5 = 10。
cinの値hash1は3、inの値cはhash26です。これらを乗算して。を取得します3*6 = 18。
dinの値hash1は存在せず、inの値dはhash27です。この場合、d = 0最初のハッシュに設定されます。これらを乗算してを取得します0*7 = 0。
次に、乗算された値を合計します。4 + 10 + 18 + 0 = 32。これは、hash1とhash2の内積です。
よく使われる方法がありAnalysis#topicizeます。token_vectorこのメソッドは、上記と同様に、単なるハッシュであるパラメーターを取ります。と25個の特徴のそれぞれのAnalysis#topicize内積を取り、それらの25個の内積の新しいベクトルを作成します。Aは単なる配列です。コードは次のようになります。token_vectortoken_vectorsfeature_vectorfeature_vector
ご覧のとおり、上記のRedisに入力した内積token_vectorと各機能を取得し、値を配列にプッシュします。token_vector
私の問題は、メソッドを呼び出すたびに約18秒かかることです。Redisを誤用していますか?問題は、RedisデータをRubyにロードしてはいけないということだと思います。Rubyコードで記述するのではなく、Redisにデータ(token_vector)を送信し、Redis関数を記述して関数を実行させることになっていますか?dot_product
cuda - GPU での一般化されたスライディング ウィンドウ計算
X と Y の 2 つの 3D 行列でスライディング ウィンドウ計算を実装する Python コードを次に示します。
一般に、Y は 1 次元と 2 次元では常に X よりもはるかに小さくなりますが、3 次元では等しくなります。
numpy.dot() を Y とウィンドウの任意の関数に置き換えることができることに注意してください。これは、Y が X の 1 番目と 2 番目の次元に沿ってのみスライドするという点で、畳み込みとは少し異なります。CUDA を使用して、この種のスライディング ウィンドウ計算を効率的に実装するための効果的な戦略を探しています。誰か私に方向性を教えてくれませんか?乾杯!
更新:以下の私の回答で、他のユーザーの助けを借りて最適化プロセスを進めているのを見ることができます。
memory - numpy.dot(A,B) の場合のメモリ エラー。ここで、A は 250000x108 浮動小数点行列で、B は A の転置です。
Memroy エラーなしで A dot B を実行するアイデアはありますか?
matlab - 5D 行列と 2D 行列の乗算
Nx、Ny、および Nz が入力として与えられる 5D 行列 Cij(3,3,Nx,Ny,Nz) があります。
次のようなことを実行する必要があります。
問題は、ループの Nx、Ny、Nz を増やすと、H 行列を計算するのに非常に長い時間がかかることです。
H行列を取得するより速い方法を知っている人はいますか?
numpy - Numpy:ランダムデータでドット積のメモリフットプリントを削減
ランダムに生成された値を使用して線形射影を行う大きなnumpy配列があります。
残念ながら、random_array多くのメモリを消費し、私のマシンはスワッピングを開始します。random_array私には、実際には一度にすべてを必要としているわけではないように思えます。理論的には、内積の計算中に怠惰に生成できるはずです...しかし、その方法がわかりません。
output_arrayからの計算のメモリフットプリントをどのように減らすことができinput_arrayますか?
algorithm - 3D 空間: マウス ポインターを使用して、オブジェクトが向いている方向をたどる
カメラが向いている方向の 3D ベクトルと 3D 空間内の 3D オブジェクトの方向/方向ベクトルが与えられた場合、マウス ポインターが画面上で視覚的に従わなければならない 2 次元の勾配を計算するにはどうすればよいですか?そのオブジェクトの方向に沿って移動しますか?
基本的に、矢印をクリックしてドラッグして前後に移動できるようにしたいのですが、マウスポインターが矢印の長さに沿って(大まかに)ドラッグした場合、つまり矢印が指している方向にのみです。
ありがとうございました
cuda - CUDAドット積
さまざまなブロックにわたる最終的な合計のアトミック計算を使用して、倍精度配列用の従来の内積カーネルを実装しようとしています。プログラミングガイドの116ページに記載されているように、倍精度でatomicAddを使用しました。おそらく、何か間違ったことをしています。すべてのブロックのスレッド全体の部分和は正しく計算されますが、その後、アトミック操作が正しく機能していないようです。同じデータでカーネルを実行するたびに、異なる結果を受け取ります。誰かが間違いを見つけたり、別の解決策を提供したりできれば幸いです。これが私のカーネルです:
そして、これが私のデバイス関数atomicAddです:
cuda - マルチ GPU Cuda 計算
私はマルチ GPU プログラミングの初心者で、マルチ GPU コンピューティングについていくつか質問があります。たとえば、内積の例を見てみましょう。2 つの大きな配列 A[N] と B[N] を作成する CPU スレッドを実行しています。これらの配列のサイズのため、内積の計算を 2 つの GPU に分割する必要があります。どちらも Tesla M2050 (計算能力 2.0) です。問題は、CPU スレッドによって制御される do ループ内でこれらの内積を数回計算する必要があることです。各内積には、前の内積の結果が必要です。2 つの異なる GPU を別々に制御する 2 つの異なるスレッドの作成について読んだことがありますが (cuda の例で説明されているように)、それらの間でデータを同期して交換する方法についての手がかりがありませんでした。別の代替手段はありますか?あらゆる種類のヘルプ/例をいただければ幸いです。よろしくお願いします!
assembly - MIPS と行列
私は MIPS と行列を含む学校のプロジェクトを扱っています。基本的に、入力によってNパラメータが与えられた場合(これは私の正方形のNxN行列のサイズである必要があります)、内部のすべての要素(ユーザーからの入力によって挿入されます)が内積を計算するプログラムを作成する必要があります。これらの 2 つの行列を計算し、その結果を 3 つ目の行列に入れます。
私は最初にこのコードにたどり着きました。これは内積を行いますが、2 つの静的行列の後でした。入力ではありません。2つのこと。ユーザーが両方の行列を挿入するには (N サイズの場合も)、どのように変更すればよいですか? また、ほとんどの場合、行列の初期化は正しく行われましたか? 「[(i * num_columns + j)*4] のようなパッセージは行っていません。私が得たのは完全な運の問題であり、合理化ではないのではないかと思っています。助けてくれる人に事前に感謝し、申し訳ありません言語の間違いについて。
vector - 2 つの線分が同一線上にあるかどうかを知るにはどうすればよいですか
浮動小数点の精度が原因で、2 つの線分が同一線上にあるかどうかを判断するのに問題があります。線分が許容範囲内で同一線上にあるかどうかを判断するにはどうすればよいですか?