在Keras中训练语言模型时如何处理大vocab_size?

问题描述 投票:0回答:1

我想通过本教程在Keras中训练语言模型:https://machinelearningmastery.com/develop-word-based-neural-language-models-python-keras/

我的输入内容包括:行数:4823744最大行数:20词汇量:790609总序列数:2172328最大序列长度:11

如您所见:

num_words = 50
tokenizer = Tokenizer(num_words=num_words, lower=True)
tokenizer.fit_on_texts([data])
# determine the vocabulary size
vocab_size = len(tokenizer.word_index) + 1

我正在使用num_words = 50的令牌生成器。vocab_size来自令牌生成器,但它仍然是较大的大小(790K)。

因此,此行:

y = to_categorical(y, num_classes=vocab_size)

导致内存错误。

这是模型定义:

model = Sequential()
model.add(Embedding(vocab_size, 10, input_length=max_length-1))
model.add(LSTM(50))
model.add(Dense(vocab_size, activation='softmax'))

我该如何处理?

我确实想拥有单词级模型而不是字符级模型。而且我确实希望至少使用10K的最常用字词。

我曾考虑过事先过滤单词,但这可能会使语言模型学习错误的序列。

我该如何解决?

谢谢

keras deep-learning nlp out-of-memory language-model
1个回答
0
投票

Fasttext是计算大词汇量嵌入的一种更好的方法-它不需要每个单词都有字典条目。

© www.soinside.com 2019 - 2024. All rights reserved.