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)?

questionAnswers(5)

yourAnswerToTheQuestion