【问题标题】:How to fine-tune pre-trained embeddings in embedding layer?如何微调嵌入层中的预训练嵌入?
【发布时间】:2021-01-18 20:57:51
【问题描述】:

如何在 tf.keras 的嵌入层中微调预训练的嵌入?

# embedding layer with pre trained weights
embedding_layer = layers.Embedding(
    input_dim=self.vocab_size + 2,
    output_dim=self.emb_size,
    embeddings_initializer=initializers.Constant(embedding_matrix),
    mask_zero=mask_zero,
    trainable=False
)

如果我只是更改trainable = True,它会微调我拥有的预训练嵌入吗?或者我是否还必须删除 initializers.Constant 作为初始化程序?

【问题讨论】:

    标签: python python-3.x tensorflow keras tf.keras


    【解决方案1】:

    您可以参考以下answer

    trainable 设置为true 时,您可以对嵌入层进行微调。

    设置embeddings_initializer 将与trained 标志相矛盾。您不应该将其设置为常量,或者您可以使用embedding_matrix 设置权重。您可以参考以下链接:

    1. setting the weights
    2. meaning of constat

    关于您的评论weights 在哪里,请参考以下链接:Keras Embedding ,where is the "weights" argument?

    【讨论】:

    • 在官方文档中,我找不到权重参数io嵌入层?我在这里错过了什么吗
    • 我也有点困惑,词嵌入是否称为权重?
    • 它是从基类继承而来的,它“隐藏”在 **kwargs 中。您也可能找不到名称,但它存在
    • 还有一个疑问,工作嵌入是否称为权重?因为我们实际上是在将词嵌入矩阵传递给权重参数,对吧?
    • @user_12 我不明白这个问题,您是否介意详细说明。也许以下内容会有所帮助blog.keras.io/…
    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 2018-07-18
    • 1970-01-01
    • 2018-12-21
    • 2018-12-16
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    相关资源
    最近更新 更多