Ho alcuni dati rappresentati da input_x
. È un tensore di dimensioni sconosciute (dovrebbe essere immesso in batch) e ogni articolo è di dimensioni n
. input_x
è sottoposto a tf.nn.embedding_lookout
, pertanto lo embed
ora ha le dimensioni dove è la dimensione di incorporamento e ?
si riferisce alla dimensione del batch sconosciuto.Tensorflow - matmul della matrice di input con dati batch
Questo è descritto qui:
input_x = tf.placeholder(tf.int32, [None, n], name="input_x")
embed = tf.nn.embedding_lookup(W, input_x)
Ora sto cercando di moltiplicare ogni campione nei miei dati di input (che ora è una matrice embedding) da una variabile di matrice, U
, e io non riesco per ottenere come farlo.
Ho provato a utilizzare tf.matmul
ma dà un errore a causa della mancata corrispondenza delle forme. Ho poi provato la seguente, espandendo la dimensione di U
e applicando batch_matmul
(I provato anche la funzione dalla tf.nn.math_ops.
, il risultato era lo stesso):
U = tf.Variable(...)
U1 = tf.expand_dims(U,0)
h=tf.batch_matmul(embed, U1)
Questo passa la compilazione iniziale, ma poi quando i dati effettiva è applicata, ottengo il seguente errore:
In[0].dim(0) and In[1].dim(0) must be the same: [64,58,128] vs [1,128,128]
so anche perché questo sta accadendo - ho replicato la dimensione di U
ed è ora 1
, ma la dimensione minibatch, 64
, doesn' t in forma
Come posso eseguire la moltiplicazione della matrice sul mio input per tensostruttura in modo corretto (per dimensioni del lotto sconosciute)?
Giusto per aggiungere una cosa. Dovrai aggiungere l'inizializzatore alla funzione di scansione, alla dimensione dell'output delle tue due moltiplicazioni di matrice, U * x –
Attualmente [tf.matmul] (http://stackoverflow.com/a/43829731/1090562) è il diritto modo di fare moltiplicazione batch. –