Recientemente revisé una implementación interesante para la clasificación de texto convolucional . Sin embargo, todo el código de TensorFlow que he revisado utiliza vectores de incrustación aleatorios (no entrenados previamente) como los siguientes:
with tf.device('/cpu:0'), tf.name_scope("embedding"):
W = tf.Variable(
tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),
name="W")
self.embedded_chars = tf.nn.embedding_lookup(W, self.input_x)
self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1)
¿Alguien sabe cómo utilizar los resultados de Word2vec o una incrustación de palabras previamente entrenadas de GloVe en lugar de una incrustación aleatoria?
fuente
tf.decode_csv()
op para convertir el archivo de texto en un tensor, pero esto puede ser costoso (en particular, se requiere la creación de unoTensor
por columna, y luego concatenar los numéricos juntos). Quizás una alternativa más fácil sería usarpandas.read_csv()
ypandas.DataFrame.as_matrix()
obtener la entrada como una matriz NumPy.sess.run(embedding_init, ...)
retornos (asumiendo que no mantiene una referencia a ella en su programa). Dependiendo de la estructura de su programa, es posible que deseedel embedding
(dóndeembedding
está la matriz NumPy) liberar la matriz antes.Utilizo este método para cargar y compartir incrustaciones.
fuente
La respuesta de @mrry no es correcta porque provoca la sobrescritura de los pesos de las incrustaciones cada vez que se ejecuta la red, por lo que si está siguiendo un enfoque de minibatch para entrenar su red, está sobrescribiendo los pesos de las incrustaciones. Entonces, desde mi punto de vista, la forma correcta de realizar incrustaciones previamente entrenadas es:
fuente
Respuesta compatible con 2.0 : hay muchas incrustaciones previamente entrenadas, que son desarrolladas por Google y que han sido de código abierto.
Algunos de ellos lo son
Universal Sentence Encoder (USE), ELMO, BERT
, etc. y es muy fácil reutilizarlos en su código.El código para reutilizar
Pre-Trained Embedding
,Universal Sentence Encoder
se muestra a continuación:Para obtener más información sobre las incrustaciones preformadas desarrolladas y de código abierto por Google, consulte TF Hub Link .
fuente
Con la versión 2 de tensorflow, es bastante fácil si usa la capa de incrustación
fuente
También estaba enfrentando un problema de incrustación, así que escribí un tutorial detallado con un conjunto de datos. Aquí me gustaría agregar lo que probé.También puedes probar este método,
Aquí hay un ejemplo detallado de trabajo de Tutorial Ipython si desea comprender desde cero, eche un vistazo.
fuente