J'ai récemment examiné une implémentation intéressante pour la classification de texte convolutif . Cependant, tout le code TensorFlow que j'ai examiné utilise des vecteurs d'incorporation aléatoires (non pré-entraînés) comme celui-ci:
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)
Est-ce que quelqu'un sait comment utiliser les résultats de Word2vec ou d'une incorporation de mots pré-entraînés GloVe au lieu d'un mot aléatoire?
la source
tf.decode_csv()
pour convertir le fichier texte en un tenseur, mais cela peut être coûteux (en particulier, cela vous oblige à en créer unTensor
par colonne, puis à concaténer les numériques ensemble). Une alternative plus simple serait peut-être d'utiliserpandas.read_csv()
etpandas.DataFrame.as_matrix()
d'obtenir l'entrée sous forme de tableau NumPy.sess.run(embedding_init, ...)
retours (en supposant que vous ne gardiez pas une référence à celui-ci dans votre programme). Selon la structure de votre programme, vous souhaiterez peut-êtredel embedding
(oùembedding
est le tableau NumPy) libérer le tableau plus tôt.J'utilise cette méthode pour charger et partager l'intégration.
la source
La réponse de @mrry n'est pas correcte car elle provoque l'écrasement des poids des plongements chaque fois que le réseau est exécuté, donc si vous suivez une approche de minibatch pour former votre réseau, vous écrasez les poids des plongements. Donc, de mon point de vue, la bonne façon de procéder aux incorporations pré-entraînées est:
la source
Réponse compatible 2.0 : il existe de nombreux intégrations pré-formées, développées par Google et Open Source.
Certains le sont
Universal Sentence Encoder (USE), ELMO, BERT
, etc. et il est très facile de les réutiliser dans votre code.Le code pour réutiliser le
Pre-Trained Embedding
,Universal Sentence Encoder
est indiqué ci-dessous:Pour plus d'informations sur les Embeddings pré-formés développés et open-source par Google, consultez TF Hub Link .
la source
Avec la version 2 de tensorflow, c'est assez facile si vous utilisez le calque Embedding
la source
J'étais également confronté à un problème d'intégration, j'ai donc écrit un tutoriel détaillé avec un jeu de données. Ici, je voudrais ajouter ce que j'ai essayé Vous pouvez également essayer cette méthode,
Voici un exemple détaillé du didacticiel Ipython si vous voulez comprendre à partir de zéro, jetez un œil.
la source