2017-11-06 13 views
0

この問題はnumpyライブラリと関係がある。2つのベクトルにnp.dotを使用すると、どのような影響がありますか?

以前の経験から、np.dotは行列の乗算と同じです。しかし、私は次元が間違っているので、2つのベクトルを乗算することは不可能であるという前提の下にありました。だから私の質問は、np.dotは実際には2つのベクトルに何をするのですか?

さらに、私は次のコードを持っていて、np.dotがスカラーを生成していると仮定します。 Xはまた、ある

x= np.dot(dc, self.c)[:self.ys] 

ベクター、どのように操作[:self.ys]ベクターへnp.dotに2つのベクトルの結果を変更しますか?私はこれについて詳細を知ることはできません。

+0

質問の最初の部分は[documentation](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.dot.html)で回答しています: "... *ベクトルの内積** ** 1次元配列のための*。 2番目の部分は不明です。完全なコード例を提供してください( 'self'を取り除き、使用する変数を定義してください)。 – kazemakase

+0

私は.Net言語でlstm神経回路網に取り組んでおり、このPythonコードを例として使用しています。 x =セル状態(ベクトル)の微分、dc =微分、self.c =タイムステップtS(ベクトル)のセル状態、self.ys =出力サイズ(int) –

+0

私の質問は、 np.dotはスカラーを生成しますが、xはベクトルです[:ys]はスカラーをベクトルに変換しますか? –

答えて

0

numpy.dot()関数は、2つの配列の内積を返します。 2-Dベクトルの場合は、行列の乗算と同じです。 1次元配列の場合、それはベクトルの内積です。 N次元配列では、aの最後の軸とbの2番目の軸の合計積です。

出典:https://www.tutorialspoint.com/numpy/numpy_dot.htm

1

numpy.dotは、2つの製品間の "ドット" または内積を実行します。しかし、ブロードキャストと呼ばれる操作も多くの言語に共通の(matlabはの暗黙的な拡張という次元一致部分を再定義します)を実行します。この場合、寸法と適合した製品が自動的に利便性と性能を発揮します。詳細な説明はhereです。

[:self.ys]はスライスです。 self.ysの値が5であるとします。ドットプロダクトの結果を取得し、最初の5つのアイテムをxに割り当てます。これは、Pythonがゼロインデックスを使用するためです。ゼロの場合は開始番号を省略することができます。したがって、利便性のためです。 [a:b][a,a+1,...,b-1]の場合aが0の場合は除外することができます。

+0

ドットプロダクトの結果がスカラーの場合、どのように最初のysアイテムを取ることができますか? –

+0

@AlexMcKinney 'dc'が列ベクトルの場合、結果は行列になります。最初に結果を見てください。 – percusse

+0

私はそれらが両方とも列ベクトルだと思います。ここでは、完全なソース(https://github.com/llSourcell/LSTM_Networks/blob/master/LSTM%20Demo.ipynb)にcという名前の2つの変数がありますが、1つは配列で、もう1つはベクトルです。私は自己が何をしているのか誤解しているかもしれません。 –

関連する問題