【问题标题】:Using fasttext pre-trained models as an Embedding layer in Keras在 Keras 中使用 fasttext 预训练模型作为嵌入层
【发布时间】:2020-09-03 16:24:30
【问题描述】:

我的目标是创建文本生成器,它将根据我提供给它的学习集生成非英语文本。

我目前正处于弄清楚模型实际应该是什么样子的阶段。我正在尝试在我的网络中实现 fasttext 预训练模型作为嵌入层。但正因为如此,我有一些问题。

1) 如何正确准备fasttext模型?我应该只下载我需要的语言的向量并将它们包含在项目中,还是必须先使用skipgramcbow 或以其他方式构建它?

2) 我想如何将 Keras Embedding() 与 fasttext 模型交换?

现在我有这样的东西:

    model = Sequential()
    model.add(Embedding(vocabulary_size, seq_len, input_length=seq_len, output_dim=OUTPUT_DIM))
    model.add(LSTM(50, return_sequences=True))

我希望使用 fasttext 向量而不是 model.add(Embedding())

希望我解释清楚。

【问题讨论】:

    标签: python machine-learning keras nlp fasttext


    【解决方案1】:

    如果您不打算微调嵌入,我只需加载 FastText 嵌入,将每个句子转换为二维(长度 × 嵌入尺寸)张量,并将其用作网络的输入。

    如果您想微调 FastText 嵌入,它们当然需要成为 Keras 模型的一部分。在这种情况下,您需要使用从您的 FastText 模型中提取的嵌入矩阵初始化嵌入层(您只需堆叠所有的 ord 向量)。这是使用constant initializer 完成的。无论如何,您还需要保留一个字典,将单词转换为嵌入矩阵中的索引。

    请注意,Embedding 构造函数的第二个参数不是序列长度(如您的代码 sn-p 中),而是您的词汇表中的单词数。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      相关资源
      最近更新 更多