我是不熟悉使用单词嵌入的人,并且想知道如何在Tensorflow中投影模型。我当时在看tensorflow网站,它只接受tsv文件(矢量/元数据),但不知道如何生成所需的tsv文件。我尝试查找它,但找不到任何解决方案来对此进行分级。我会尝试以tsv文件格式保存模型吗,是否需要进行一些转换?任何帮助将不胜感激。
我将模型保存为以下文件,并在需要使用时将其加载:
word2vec.model
word2vec.model.wv.vectors.npy
答案 0 :(得分:1)
假设您要尝试将一些经过预训练的Gensim词嵌入程序加载到模型中,则可以使用以下代码直接执行此操作。
import numpy
import tensorflow as tf
from gensim.models import KeyedVectors
# Load the word-vector model
wvec_fn = 'wvecs.kv'
wvecs = KeyedVectors.load(wvec_fn, mmap='r')
vec_size = wvecs.vector_size
vocab_size = len(wvecs.vocab)
# Create the embedding matrix where words are indexed alphabetically
embedding_mat = numpy.zeros(shape=(vocab_size, vec_size), dtype='int32')
for idx, word in enumerate(sorted(wvecs.vocab)):
embedding_mat[idx] = wvecs.get_vector(word)
# Setup the embedding matrix for tensorflow
with tf.variable_scope("input_layer"):
embedding_tf = tf.get_variable(
"embedding", [vocab_size, vec_size],
initializer=tf.constant_initializer(embedding_mat),
trainable=False)
# Integrate this into your model
batch_size = 32 # just for example
seq_length = 20
input_data = tf.placeholder(tf.int32, [batch_size, seq_length])
inputs = tf.nn.embedding_lookup(embedding_tf, input_data)
如果您保存的不是模型,而不仅仅是KeyedVector,则可能需要修改代码以加载模型,然后使用model.wv
访问KeyedVector。