首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用整个GloVe预训练嵌入矩阵或根据词汇表中的单词数最小化该矩阵。

使用整个GloVe预训练嵌入矩阵或根据词汇表中的单词数最小化该矩阵。
EN

Data Science用户
提问于 2023-01-10 14:01:00
回答 1查看 102关注 0票数 1

我已经创建了一个神经网络来进行情感分析,使用双向GloVe层和预先训练好的嵌入。

在培训期间,我注意到具有冻结嵌入权的nn.Embedding层使用了GloVe的整个词汇表:

(实例化模型对象的输出) (embedding): Embedding(400000, 50, padding_idx=0)

还介绍了nn.Embedding层的结构:

self.embedding = nn.Embedding.from_pretrained(embedding_matrix, freeze=True, padding_idx=self.padding_idx)

,其中embedding_matrix = glove_vectors.vectors对象和glove_vectors = torchtext.vocab.GloVe(name='6B', dim=50)

400,000是glove_vectors对象的形状(总共意味着40万个预先训练过的单词).

然后我注意到LSTM神经网络的训练每小时大约需要3到5分钟。这对15万可训练参数来说太长了。我想知道这是否与整个嵌入矩阵的使用有关40万字,或者因为双向LSTM方法,这是正常的。

是否值得从只存在于我句子中的单词中创建GloVe嵌入矩阵的最小化版本,还是使用整个GloVe嵌入矩阵不影响培训性能?

EN

回答 1

Data Science用户

发布于 2023-01-12 01:19:38

由于体系结构的复杂性,长时记忆(LSTM)可能需要很长的时间来训练。

如果你认为嵌入空间的大小也减慢了训练的速度,你可以只使用最频繁出现的单词来减少词汇量。由于您使用的是PyTorch,所以可以在torchtext.vocab.GloVe类中使用max_vectors参数来实现这一点,该参数限制了加载集的大小。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/117670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档