行列を行列に乗算したい。行列を使って配列を試すと、次のようになります。テンソルフロー行列乗算
import tensorflow as tf
x = tf.placeholder(tf.float32, [None, 3])
W = tf.Variable(tf.ones([3, 3]))
y = tf.matmul(x, W)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
curr_y = sess.run(y, feed_dict={x: [[1,2,3],[0,4,5]]})
print curr_y
したがって、配列のバッチサイズは2で、形状は3x1です。だから私は配列3x1と3x3の形状で行列を掛けることができます。 しかし、私は3x3の形をした行列を再び持っていますが、今度は行列であり、3x2の形の配列ではなく、バッチサイズ2で配列が動作していません。
しかし、行列に行列を掛けようとすると、それは動作しません。
import tensorflow as tf
x = tf.placeholder(tf.float32, [None, 3,3])
W = tf.Variable(tf.ones([3, 3]))
y = tf.matmul(x, W)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
curr_y = sess.run(y, feed_dict={x: [[[1,2,3],[1,2,3]],[[1,1,4],[0,4,5]]]})
print curr_y
######## EDITValueError: Shape must be rank 2 but is rank 3 for 'MatMul' (op: 'MatMul') with input shapes: [?,3,3], [3,3].
は申し訳ありませんが、私が何をしたいのか、行列や配列のバッチに行列をMATMULすること、です。だから私は実際に、私はテンソル 'X' に
y = tf.matmul(W, x)
したがって、配列のバッチサイズは2で、形状は3x1です。だから私は配列3x1と3x3の形状で行列を掛けることができます。しかし、私は再び3x3の形をした行列を持っていますが、今度は行列であり、3x2の形の配列ではなく、バッチサイズ2で動作しません。 あなたが書いたことを私は理解しました。しかし、どのように行列を他の行列と掛けることができますか?バッチサイズXの場合 私は間違いがあると思います。私はy = tf.matmul(W、x)をしたかった y = tf.matmul(x、W) しかし、両方の例ではうまくいきません。では、配列の配列に行列を掛ける方法は? – tag
@ tag「行列をバッチに乗じる」と言ったとき、最後まで乗算して結果を得ようとするのですか? 'matmul'はあなたのためにそれをしません、おそらく' for'ループを使用する必要があります。 – LYu