Niedawno przejrzałem interesującą implementację klasyfikacji konwolucyjnej tekstu . Jednak cały kod TensorFlow, który sprawdziłem, używa losowych (nie wstępnie wytrenowanych) wektorów osadzających, takich jak następujące:
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)
Czy ktoś wie, jak używać wyników osadzania słów z Word2vec lub wstępnie wytrenowanego słowa GloVe zamiast losowego?
źródło
tf.decode_csv()
op przekonwertować plik tekstowy do tensora, ale może to być drogie (zwłaszcza, że wymaga, aby utworzyć jedenTensor
na kolumnę, a następnie złączyć te numerycznych razem). Być może łatwiejszą alternatywą byłoby użyciepandas.read_csv()
ipandas.DataFrame.as_matrix()
pobranie danych wejściowych jako tablicy NumPy.sess.run(embedding_init, ...)
return (zakładając, że nie przechowujesz odniesienia do niej w swoim programie). W zależności od struktury programu możesz chciećdel embedding
(gdzieembedding
jest tablica NumPy) zwolnić tablicę wcześniej.Używam tej metody do ładowania i udostępniania osadzania.
źródło
Odpowiedź @mrry nie jest właściwa, ponieważ prowokuje nadpisywanie wag osadzania w każdej sieci, więc jeśli stosujesz podejście minibatch do trenowania sieci, nadpisujesz wagi osadzeń. Tak więc, z mojego punktu widzenia, właściwą drogą do wcześniej wytrenowanego osadzania jest:
źródło
Odpowiedź zgodna z wersją 2.0 : Istnieje wiele wstępnie wytrenowanych osadzeń, które zostały opracowane przez Google i które zostały oparte na otwartym źródle.
Niektóre z nich są
Universal Sentence Encoder (USE), ELMO, BERT
itd. I bardzo łatwo jest je ponownie wykorzystać w kodzie.Kod do ponownego wykorzystania
Pre-Trained Embedding
,Universal Sentence Encoder
przedstawiono poniżej:Aby uzyskać więcej informacji na temat wstępnie wytrenowanych osadzeń opracowanych i udostępnionych na zasadach open source przez Google, zapoznaj się z TF Hub Link .
źródło
W przypadku tensorflow w wersji 2 jest to całkiem proste, jeśli używasz warstwy osadzania
źródło
Miałem też problem z osadzaniem, więc napisałem szczegółowy samouczek z zestawem danych. Tutaj chciałbym dodać to, co wypróbowałem Możesz też wypróbować tę metodę,
Oto szczegółowy przykład samouczka Ipython, jeśli chcesz zrozumieć od zera, spójrz.
źródło