我有三个关于微调字向量的问题。求你帮帮我。我会很感激的!事先非常感谢!
@Franck Dernoncourt谢谢你提醒我。我在这里是绿色的,希望能从强大的社区中学到一些东西。请看我的问题,当你有时间,再次感谢你!
发布于 2016-10-20 02:05:58
1)您所需要的只是使用预训练字嵌入可训练/固定嵌入层的一个好例子,并对代码进行以下更改。在Keras中,您可以在默认情况下更新此层,以将其排除在培训之外,需要将其设置为False。
embedding_layer = Embedding(nb_words + 1,
EMBEDDING_DIM,
weights=[embedding_matrix],
input_length=MAX_SEQUENCE_LENGTH,
trainable=True)2)您的w2v只是用于嵌入层初始化,与您将要使用的结构无关。将只更新内存中的权重。
发布于 2019-05-09 08:33:15
回答你的第一个问题-
在trainable=True构造函数中设置Embedding时。预先训练过的嵌入被设置为weights of那个embedding layer。现在,那些weights上发生的任何微调都与w2v(CBOW or SG)无关。如果您想完善您的w2v模型,您将不得不使用这些技术中的任何一个。请参阅以下答案。
答覆2-
对weights of embedding layer的任何细化都不会影响您的vec.bin。这些更新的weights与模型一起保存,因此理论上您可以将它们取出来。
答覆3-
gensim只实现了这两个方法(SG和CBOW)。然而,有许多新的方法用于训练单词向量,如MLM(蒙面语言建模)。glove试图模拟单词的co-occurences概率。
如果您想使用您自己的自定义方法进行微调。您只需指定一个任务(如text classification),然后保存更新的嵌入层权重。您必须适当地注意索引,以便为每个单词分配相应的向量。
https://stackoverflow.com/questions/40143405
复制相似问题