在张量流会话之间共享单词嵌入

时间:2018-10-03 01:36:30

标签: python tensorflow deep-learning nlp word-embedding

我正在处理一个NLP管道,该管道使用在不同会话中跨多个模型的预训练单词嵌入。目前,我对嵌入这个词有一种麻木的表示法,该词被复制到每个模型中。

self.word_embedding = tf.Variable(tf.constant(0.0, shape=(self.word_count, self.n_vector)), trainable=False)
...
embedding_placeholder = tf.placeholder(tf.float32, shape=(self.word_count, self.n_vector))
self.sess.run(self.word_embedding.assign(embedding_placeholder),
              feed_dict={embedding_placeholder:self.data['embedding'].embedding})

此代码当前在每个会话中运行,从而使每个会话都为单词嵌入变量分配空间。由于嵌入的范围很大,因此我想在会话之间共享,这样他们就可以引用相同的嵌入而不会占用过多的内存。

不幸的是,无法使用tensorflow外部的嵌入,因为tf.contrib.seq2seq.BeamSearchDecoder和 tf.nn.embedding_lookup需要嵌入为张量。

0 个答案:

没有答案