Hej Jungs, Ich versuche, multi beschriftet kategorische Daten in einen dichten Raum mit Einbettungen zu projizieren.Tensorflow Einbettung Lookup mit ungleich großen Listen
Hier ist ein Spielzeugbeispiel. Nehmen wir an, ich habe vier Kategorien und möchte sie in einen 2D-Raum projizieren. Außerdem habe ich zwei Instanzen, die erste Kategorie gehören, 0 und die zweite Kategorie 1.
Der Code etwa wie folgt aussehen:
sess = tf.InteractiveSession()
embeddings = tf.Variable(tf.random_uniform([4, 2], -1.0, 1.0))
sess.run(tf.global_variables_initializer())
y = tf.nn.embedding_lookup(embeddings, [0,1])
y.eval()
und zurück etwas wie folgt aus:
array([[ 0.93999457, -0.83051205],
[-0.1699729 , 0.73936272]], dtype=float32)
So weit, so gut. Stellen Sie sich vor, eine Instanz gehört zu zwei Kategorien. Die Einbettung Lookup zwei Vektoren zurück, die ich durch meine zum Beispiel reduzieren:
y = tf.nn.embedding_lookup(embeddings, [[0,1],[1,2]]) # two categories
y_ = tf.reduce_mean(y, axis=1)
y_.eval()
Dies funktioniert genauso wie ich es auch erwartet. Mein Problem stellt sich nun, wenn Instanzen in meinen Charge werden nicht auf die gleiche Menge an Kategorien gehören z.B .:
y = tf.nn.embedding_lookup(embeddings, [[0,1],[1,2,3]]) # unequal sized lists
y_ = tf.reduce_mean(y, axis=1)
y_.eval()
ValueError: Argument must be a dense tensor: [[0, 1], [1, 2, 3]] - got shape [2], but wanted [2, 2].
Jede Idee, wie dieses Problem zu bekommen?