我试图了解在this model中嵌入预训练单词的实现。
作者加载嵌入(train.py:144),并将其传递到模型的embed_matrix
占位符(train.py:73)。
但是,embed_matrix
从未被读取,甚至从未在其自身的初始化(model.py:70)之外使用。相反,当计算嵌入(model.py:114)时,会创建一个用于嵌入的新变量:
self.Embedding = tf.get_variable('Embedding', [self.n_vocab, self.embedding_size], tf.float32)
我知道get_variable()
可用于获取给定名称和范围的现有变量。但是这里的名称不同(embed_matrix
与Embedding
)。
我不明白这将如何导致有效的词嵌入实现。似乎在运行时,将经过预训练的词嵌入传递到占位符中并忘记了它,然后在无需训练的情况下创建并使用了一个新词。有什么我没看到的还是这是个错误?