2015-11-22 22 views
8

Jestem zainteresowany zainicjowaniem implementacji tensorflow seq2seq z udoskonalonym word2vec.inicjowanie osadzania Seq2seq z udoskonalonym word2vec

Widziałem kod. Wydaje osadzanie jest inicjowany

with tf.variable_scope(scope or "embedding_attention_decoder"): 
with tf.device("/cpu:0"): 
embedding = tf.get_variable("embedding", [num_symbols, cell.input_size]) 

jak mogę to zmienić, aby zainicjować z pretrained word2vec ??

Odpowiedz

0

Można zmienić tokanizer obecny w tensorflow/models/rnn/translate/data_utils.py, aby użyć wstępnie przeszkolonego modelu word2vec do tokenizacji. Linie 187-190 z data_utils.py:

if tokenizer: 
    words = tokenizer(sentence) 
else: 
    words = basic_tokenizer(sentence) 

użycie basic_tokenizer. Możesz napisać metodę tokenizer, która używa uprzednio wyszkolonego modelu word2vec do tokenizowania zdań.

7

Myślę, że dostałeś swoją odpowiedź na liście mailingowej, ale umieszczam ją tutaj dla potomności.

https://groups.google.com/a/tensorflow.org/forum/#!topic/discuss/bH6S98NpIJE

Można go zainicjować losowo i potem zrobić: session.run (embedding.assign (my_word2vec_matrix))

ten zastąpi wartości początkowych.

To wydaje się działać dla mnie. Uważam, że potrzebne jest trainable=False do utrzymania wartości?

# load word2vec model (say from gensim) 
model = load_model(FILENAME, binary=True) 

# embedding matrix 
X = model.syn0 
print(type(X)) # numpy.ndarray 
print(X.shape) # (vocab_size, embedding_dim) 

# start interactive session 
sess = tf.InteractiveSession() 

# set embeddings 
embeddings = tf.Variable(tf.random_uniform(X.shape, minval=-0.1, maxval=0.1), trainable=False) 

# initialize 
sess.run(tf.initialize_all_variables()) 

# override inits 
sess.run(embeddings.assign(X)) 
+0

co z indeksem: model.index2word? jak przekazać to do tensorflow? – vgoklani

Powiązane problemy