【报错笔记】Vector for token xxx has 147 dimensions, but previously read vectors have 300 dimensions.

关于在pytorch-nlp库中使用词嵌入产生维度不对应错误的原因和解决方式

1.错误

RuntimeError: Vector for token Bolonia has 147 dimensions, but previously read vectors have 300 dimensions. All vectors must have the same number of dimensions.

2.代码

# 使用Glove词向量
from torchnlp.word_to_vector import GloVe
vectors = GloVe()
vectors['hello']

在电脑上运行上述代码的时候,会报上述错误,具体如图:
【报错笔记】Vector for token xxx has 147 dimensions, but previously read vectors have 300 dimensions._第1张图片

3.原因

上述示例代码在初始化GloVe时就产生了错误。在初始化时,要先从国外服务器上下载词嵌入文件,然后加载到内存中。产生错误的原因其实是在加载预训练的词嵌入文件到内存的时候,因为文件太大了内存不足导致溢出。笔者的电脑是8G内存,不够用。

vectors = GloVe()

根据 官方文档.默认下载的词嵌入文件是840B,该文件很大。

4.解决方式

  1. 换一台内存足够大的电脑跑。
  2. 设置参数,下载较小的预训练词向量模型。具体参数可以查看根据 官方文档 或者 源代码。其他词向量模型如FastText、BPEmb也类似。
    例如,选择下载glove.6B.zip,这个文件只有800M+。
# 使用Glove词向量
from torchnlp.word_to_vector import GloVe
vectors = GloVe(name='6B')
vectors['hello'].shape
运行结果如下
torch.Size([300])

你可能感兴趣的:(Pytorch,torchnlp,报错笔记,pytorch,深度学习,nlp)