これは私の最初の質問stackoverflowです。予想されるフォーマットに合っていることを願っています。ドットプロダクトのディメンションの問題は、
私は単に行列とベクトルとの内積を計算する関数を作成しようとしている:
A = T.matrix()
B = T.vector()
C = T.dot(A,B)
a = numpy.array([[1,2],[3,4]])
b = numpy.array([[1],[0]])
f = function([A,B],C)
私はnumpyのに製品を尋ねるとき、私は何の問題もありません。私の予想array([[1],[3]])
を返します。しかし、私はTheanoにf(a,b)
を要求したとき、私はこのエラーを持っているnumpy.dot(a,b)
:TypeError: ('Bad input argument to theano function with name "<stdin>:1" at index 1(0-based)', 'Wrong number of dimensions: expected 1, got 2 with shape (2, 1).')
私の理解では、Theanoタイピングが私のY
は必ずしも1Dにするベクトルとして宣言期待ということでした。 私は代わりにb = numpy.array([1,0])
で試しました。たぶん、theanoは、それが計算することができる列でなければならないことを理解するでしょうか? 私が得た結果はarray([[ 2., 2.],[ 4., 4.]])
です。これはさらに私にとって謎です。
私は把握できる説明で、似たような話題を見つけましたが、まったく見つかりませんでした。私はそれがあなたの多くにとって明白に見えなければならないことを認識しますが、私は手に感謝します!
あなたの答えをありがとう。私はこれらの解決法をすでに試していましたが、両方とも配列([[2,2]、[4,4]])を返します。しかし、たぶん私はちょうどT.dot()が最初にしたことを誤解しているかもしれません... –
上記のコードはそれぞれ[1 3]と[[1] [3]を返します。最初のケースでは、次元2x1から返されるベクトルです。 2番目のケースでは、次元2x1が返される行列です。 'numpy.dot(a、b)'を試すことで結果を確認できます。 –
両方のコードを再度実行しました。はい、私は[1,3]ベクトルを取得します。 結果として、[2,2]、[4,4]]を持っていたときに、私が何かしらの奇妙なことを見つけられなかったのです。 cmdコンソールで何か問題が起きている必要があります。とにかくありがとう! –