tensorflow - vinculados - ventaja o desventaja de la incrustación de objetos
inicialización de la incrustación de Seq2seq con word2vec preconfigurado (2)
Creo que ha obtenido su respuesta en la lista de correo pero la estoy poniendo aquí para la posteridad.
https://groups.google.com/a/tensorflow.org/forum/#!topic/discuss/bH6S98NpIJE
Puedes inicializarlo al azar y luego hacer: session.run (embedding.assign (my_word2vec_matrix))
Esto anulará los valores init.
Esto parece funcionar para mí. Creo que trainable=False
es necesario para mantener los valores corregidos?
# 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))
Estoy interesado en inicializar la implementación de tensorflow seq2seq con word2vec preestablecido.
He visto el código. Parece que la inserción está inicializada
with tf.variable_scope(scope or "embedding_attention_decoder"):
with tf.device("/cpu:0"):
embedding = tf.get_variable("embedding", [num_symbols, cell.input_size])
¿Cómo cambio esto para inicializar con word2vec pre-entrenamiento?
Puede cambiar el tokanizer presente en tensorflow/models/rnn/translate/data_utils.py
para usar un modelo de word2vec preformado para tokenizar. Las líneas 187-190
de data_utils.py
:
if tokenizer:
words = tokenizer(sentence)
else:
words = basic_tokenizer(sentence)
usa basic_tokenizer
. Puede escribir un método de tokenizer
que utiliza un modelo de word2vec preentrenado para tokenizar las oraciones.