Búsqueda de incrustación de Tensorflow con listas de tamaños desiguales

Hej chicos, estoy tratando de proyectar datos categóricos multi etiquetados en un espacio denso usando incrustaciones.

Aquí hay un ejemplo de juguete. Digamos que tengo cuatro categorías y quiero proyectarlas en un espacio 2D. Además, obtuve dos instancias, la primera perteneciente a la categoría 0 y la segunda a la categoría 1.

El código se verá así:

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

y devolver algo como esto:

array([[ 0.93999457, -0.83051205],
       [-0.1699729 ,  0.73936272]], dtype=float32)

Hasta aquí todo bien. Ahora imagine que una instancia pertenece a dos categorías. La búsqueda de incrustación devolverá dos vectores que puedo reducir por medio, por ejemplo:

y = tf.nn.embedding_lookup(embeddings, [[0,1],[1,2]]) # two categories
y_ = tf.reduce_mean(y, axis=1)
y_.eval()

Esto funciona tal como lo espero también. Mi problema ahora surge cuando las instancias en mi lote no pertenecen a la misma cantidad de categorías, por ejemplo:

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].

¿Alguna idea sobre cómo solucionar este problema?

Respuestas a la pregunta(0)

Su respuesta a la pregunta