Recentemente, revisei uma implementação interessante para classificação de texto convolucional . No entanto, todo o código do TensorFlow que analisei usa vetores de incorporação aleatórios (não pré-treinados) como o seguinte:
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)
Alguém sabe como usar os resultados do Word2vec ou da incorporação de palavras pré-treinadas do GloVe em vez de uma palavra aleatória?
fonte
tf.decode_csv()
op para converter o arquivo de texto em um tensor, mas isso pode ser caro (em particular, requer que você crie umTensor
por coluna e, em seguida, concatene os numéricos juntos). Talvez uma alternativa mais fácil seja usarpandas.read_csv()
epandas.DataFrame.as_matrix()
obter a entrada como um array NumPy.sess.run(embedding_init, ...)
retorna (assumindo que você não mantenha uma referência a ele em seu programa). Dependendo da estrutura do seu programa, você pode desejardel embedding
(ondeembedding
está o array NumPy) liberar o array mais cedo.Eu uso esse método para carregar e compartilhar a incorporação.
fonte
A resposta de @mrry não está certa porque provoca a sobregravação dos pesos de embeddings de cada rede executada, portanto, se você está seguindo uma abordagem de minibatch para treinar sua rede, está sobrescrevendo os pesos dos embeddings. Então, no meu ponto de vista, a maneira certa de fazer embeddings pré-treinados é:
fonte
2.0 Resposta compatível : Existem muitos Embeddings Pré-Treinados, que são desenvolvidos pelo Google e que foram de fonte aberta.
Alguns deles são
Universal Sentence Encoder (USE), ELMO, BERT
, etc. e é muito fácil reutilizá-los em seu código.Código de reutilizar a
Pre-Trained Embedding
,Universal Sentence Encoder
é mostrado abaixo:Para obter mais informações sobre os Embeddings pré-treinados desenvolvidos e disponibilizados pelo Google, consulte TF Hub Link .
fonte
Com tensorflow versão 2 é muito fácil se você usar a camada de incorporação
fonte
Eu também estava enfrentando problemas de incorporação, então escrevi um tutorial detalhado com conjunto de dados. Aqui, gostaria de acrescentar o que experimentei. Você também pode tentar este método,
Aqui está trabalhando um exemplo detalhado do Tutorial Ipython, se você quiser entender do zero, dê uma olhada.
fonte