keras-cn icon indicating copy to clipboard operation
keras-cn copied to clipboard

将词向量随机初始化,实验过程中保持词向量不变,只学习模型参数。这句话是说,embedding层不可训练吗?

Open summerHaha opened this issue 8 years ago • 2 comments

    • 如题,在一篇文章里看到,“将词级别的词向量随机初始化,实验过程中保持词向量不变,只学习模型参数”,意思是embedding层不可训练吗?我查了文档看到“使用预训练词向量”文章后,感觉应该是设置embedding层的 trainable=False,请问这么做对吗?
    • 还有一点,看文档介绍,embedding层的参数并没有trainable啊,那怎么“使用预训练词向量”这篇文章还会这么设置呢?
    • 另外embedding层是不是将词语下标进行随机初始化,然后再迭代过程中不断的进行微调,不知这样理解对不对?

summerHaha avatar Nov 16 '16 07:11 summerHaha

@summerHaha

  1. Embedding层当然是可以训练的,设置trainable=False会使得Embedding层不更新参数,如果这就是你想要的东西的话,当然是可以的。
  2. 一个层能不能训练不能看trainable,要看它的self.build函数中是否对self.trainable_weights添加了参数。trainable是所有层对象都有的属性,定义在基类Layer中,Embedding继承了Layer,自然也有trainable这个属性。
  3. 我不是NLP的专家,这个问题不太清楚,但基本上应该没错。

MoyanZitto avatar Nov 17 '16 13:11 MoyanZitto

  1. 是的,使用预训练词向量时需要设置weight=[你的预训练权重],trainable=false 2.有的,请更新到最新版本看embedding源码 3.训练embedding时是这样,初始化一个word_n*vector_dim的矩阵,初始化的方式有多种

Cherrymelon avatar Aug 06 '18 04:08 Cherrymelon