input_x
で表されるデータがあります。これは不明なサイズのテンソル(バッチで入力する必要があります)であり、各アイテムのサイズはn
です。 input_x
はtf.nn.embedding_lookout
となり、embed
のサイズは[?, n, m]
となりました。ここで、m
は埋め込みサイズ、?
は未知のバッチサイズを指します。Tensorflow - バッチデータを含む入力行列のmatmul
これは、ここで説明されています
input_x = tf.placeholder(tf.int32, [None, n], name="input_x")
embed = tf.nn.embedding_lookup(W, input_x)
私は今U
、行列変数で(今埋め込む行列である)私の入力データの各サンプルを乗算しようとしている、と私は見えることはできませんそれをする方法を得るために。
私は最初にtf.matmul
を使用して試しましたが、形状の不一致によるエラーが発生します。私は、(Iもtf.nn.math_ops.
から機能を試し、結果は同じであった)U
の寸法を拡大しbatch_matmul
を適用することによって、次のことを試みた:
U = tf.Variable(...)
U1 = tf.expand_dims(U,0)
h=tf.batch_matmul(embed, U1)
実際のデータがあるときは、初期コンパイルを通過するが、適用され、私は次のエラーを取得する:
In[0].dim(0) and In[1].dim(0) must be the same: [64,58,128] vs [1,128,128]
なぜこれが起こっている私も知っている - 私はU
の次元を複製し、それは今1
ですが、minibatchサイズ、64
」doesnのフィット。
テンソル行列入力で、その行列乗法を正しく(未知のバッチサイズのために)行うことはできますか?
を与えるだろう。あなたは、2つの行列乗算の出力のサイズにスキャン関数にイニシャライザを追加する必要があります。U * x –
現在、[tf.matmul](http://stackoverflow.com/a/43829731/1090562)は正しいですバッチ乗算を行う方法。 –