Tensorflow - matmul da matriz de entrada com dados em lote
Eu tenho alguns dados representados porinput_x
. É um tensor de tamanho desconhecido (deve ser inserido por lote) e cada item é de tamanhon
. input_x
sofretf.nn.embedding_lookup
, de modo aembed
agora tem dimensões[?, n, m]
Ondem
é o tamanho de incorporação e?
refere-se ao tamanho do lote desconhecido.
Isso é descrito aqui:
input_x = tf.placeholder(tf.int32, [None, n], name="input_x")
embed = tf.nn.embedding_lookup(W, input_x)
Agora estou tentando multiplicar cada amostra nos meus dados de entrada (que agora são expandidos pela incorporação de dimensão) por uma variável de matriz,U
, e não consigo entender como fazer isso.
Eu tentei usartf.matmul
mas gera um erro devido à incompatibilidade de formas. Eu tentei o seguinte, expandindo a dimensão deU
e aplicandobatch_matmul
(Eu também tentei a função detf.nn.math_ops.
, o resultado foi o mesmo):
U = tf.Variable( ... )
U1 = tf.expand_dims(U,0)
h=tf.batch_matmul(embed, U1)
Isso passa a compilação inicial, mas quando os dados reais são aplicados, recebo o seguinte erro:
In[0].dim(0) and In[1].dim(0) must be the same: [64,58,128] vs [1,128,128]
Eu também sei por que isso está acontecendo - repliquei a dimensão deU
e é agora1
, mas o tamanho do minibatch,64
, não se encaixa.
Como posso fazer a multiplicação da matriz na entrada da matriz tensorial corretamente (para tamanho de lote desconhecido)?