python - 在 Keras 中使用 fasttext 预训练模型作为嵌入层
问题描述
我的目标是创建文本生成器,它将根据我提供给它的学习集生成非英语文本。
我目前正处于弄清楚模型实际上应该是什么样子的阶段。我正在尝试在我的网络中实现 fasttext 预训练模型作为嵌入层。但正因为如此,我有一些问题。
1)如何正确准备fasttext模型?我应该只下载我需要的语言的矢量,并将它们包含在项目中,还是我必须首先使用skipgram
或cbow
或以其他方式构建它?
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))
而不是model.add(Embedding())
我希望放置 fasttext 向量。
我希望我解释清楚。
解决方案
如果您不打算微调嵌入,我只需加载 FastText 嵌入,将每个句子转换为 2-D(长度 × 嵌入尺寸)张量,并将其用作网络的输入。
如果您想微调 FastText 嵌入,它们当然需要成为 Keras 模型的一部分。在这种情况下,您需要使用从您的 FastText 模型中提取的嵌入矩阵初始化嵌入层(您只需堆叠所有的 ord 向量)。这是使用常量初始化器完成的。在任何情况下,您还需要保留一个字典,将单词转换为嵌入矩阵中的索引。
请注意,Embedding
构造函数的第二个参数不是序列长度(如您的代码片段中所示),而是词汇表中的单词数。
推荐阅读
- android - 如何强制为 Android APP 重新加载数据
- python - Flask - base.html 中的引导程序
- attachment - PowerApps 附件控制如何检查是否已制作任何附件
- python - Python:将.txt文件读入数据框并写回文件后无法获取原始格式
- email - Prestashop 1.7 将新变量添加到电子邮件 total_shipping_tax_excl
- python - 通过在python中解析xml文件来获取父元素
- csv - 线图绘制奇怪;散点图拒绝时间戳
- vue.js - 无法读取 Vue 中未定义的属性 0
- django - PUT/更新外键和多对多关系仅与 pk,而不是整个对象
- mysql - 使用php在mysql表中添加一些值