tensorflowでのtf.matmul(shape(batch_size, ?, input_size), shape(inputs_size, output_size))

投稿者: Anonymous

tensorflowで
inputs.shape = [batch_size, ?, input_size]
w.shape = [input_size, output_size]の時
tf.matmul(inputs, w)
をやりたいのですが、やりかたがわかりません。
?の部分がtensorによって異なる(inputs[0].shape = [2, input_size], inputs[1].shape = [4, input_size]のようなことが起きている)ので、

a = tf.reshape(inputs, [-1, input_size])
a = tf.matmul(a, ...)
a = tf.reshape(a, [batch_size, ?, input_size])

のような変換ができません。
なにかよい解決方法あれば教えてください。
?の部分は配列でlenghtsで持っています。

解決

?の箇所が可変ということ以前に、
inputsはrank3で,wはrank2ですので?部分が固定値だとしてもmatmulは使用できないかと思います。

期待されている形がイメージ出来ていないので検討外れの回答かもしれませんが
inputsのbatch毎にwとmatmulした結果を得たいということであれば、以下でどうでしょうか

m = tf.map_fn(lambda x:tf.matmul(x,w), inputs)
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *