Tensorflow - Matrix der Eingabematrix mit Chargendaten
Ich habe einige Daten dargestellt durchinput_x
. Es ist ein Tensor unbekannter Größe (sollte chargenweise eingegeben werden) und jedes Element hat die Größen
. input_x
erfährttf.nn.embedding_lookup
, damitembed
hat jetzt Dimensionen[?, n, m]
wom
ist die Einbettungsgröße und?
bezieht sich auf die unbekannte Losgröße.
Dies ist hier beschrieben:
input_x = tf.placeholder(tf.int32, [None, n], name="input_x")
embed = tf.nn.embedding_lookup(W, input_x)
Ich versuche jetzt, jedes Sample in meinen Eingabedaten (die jetzt durch Einbetten der Dimension erweitert werden) mit einer Matrixvariablen zu multiplizieren.U
, und ich kann anscheinend nicht verstehen, wie das geht.
Ich habe es zuerst mit @ versuctf.matmul
aber es gibt einen Fehler aufgrund von Abweichungen in den Formen. Ich habe dann folgendes versucht, indem ich die Dimension von @ erweitert haU
und bewerbenbatch_matmul
(Ich habe auch die Funktion von @ ausprobiertf.nn.math_ops.
, das Ergebnis war das gleiche):
U = tf.Variable( ... )
U1 = tf.expand_dims(U,0)
h=tf.batch_matmul(embed, U1)
Dies übergibt die erste Kompilierung, aber wenn die tatsächlichen Daten angewendet werden, wird der folgende Fehler angezeigt:
In[0].dim(0) and In[1].dim(0) must be the same: [64,58,128] vs [1,128,128]
Ich weiß auch, warum das passiert - ich habe die Dimension von @ nachgebildU
und es ist jetzt1
, aber die Minibatch-Größe,64
, passt nicht.
Wie kann ich diese Matrixmultiplikation auf meinem Tensor-Matrix-Eingang korrekt durchführen (für unbekannte Chargengröße)?