我的目标是创建文本生成器,该文本生成器将根据我提供给它的学习集生成非英语文本。
我目前正在弄清模型的实际外观。我正在尝试将fasttext预训练模型实现为网络中的嵌入层。但由于这个原因,我有一些疑问。
1)如何正确准备快速文本模型?我应该只下载所需语言的矢量并将其包含在项目中,还是必须先使用skipgram
或cbow
或以其他方式构建矢量?
2)我应该如何与快速文本模型交换Keras Embedding()?
现在我有这样的东西:
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())
放置快速文本矢量。
我希望我解释清楚。
答案 0 :(得分:0)
如果您不打算微调嵌入,则只需加载FastText嵌入,将每个句子转换为二维(长度×嵌入暗淡)张量,然后将其用作网络的输入。
如果您想微调FastText嵌入,那么它们当然需要成为Keras模型的一部分。在这种情况下,您需要使用从FastText模型提取的嵌入矩阵来初始化Embedding层(您只需堆叠所有ord向量)。这是使用constant initializer完成的。无论如何,您还需要保留一个字典,该字典会将单词转换为嵌入矩阵中的索引。
请注意,export const Parent: FC = ({items}) => {
return (
<>
<ListComponent items={items} />
<ChildWillBeIsolated />
</>
)
}
构造函数的第二个参数不是序列长度(如代码片段中所示),而是词汇量中的单词数。