gar*_*y69 6 python nlp neural-network recurrent-neural-network pytorch
我在这里关注本教程https://cs230-stanford.github.io/pytorch-nlp.html。在那里创建了一个神经模型,使用nn.Module,带有嵌入层,在此处初始化
self.embedding = nn.Embedding(params['vocab_size'], params['embedding_dim'])
Run Code Online (Sandbox Code Playgroud)
vocab_size是训练样本的总数,即 4000。 embedding_dim是 50。该forward方法的相关部分如下
def forward(self, s):
# apply the embedding layer that maps each token to its embedding
s = self.embedding(s) # dim: batch_size x batch_max_len x embedding_dim
Run Code Online (Sandbox Code Playgroud)
将批次传递给模型时,我收到此异常,就像model(train_batch)
train_batch维度batch_sizex的 numpy 数组一样
batch_max_len。每个样本是一个句子,每个句子都被填充,使其具有批次中最长句子的长度。
文件 "/Users/liam_adams/Documents/cs512/research_project/custom/model.py", line 34, in forward s = self.embedding(s) # dim: batch_size x batch_max_len x embedding_dim File "/Users/liam_adams/Documents/ cs512/venv_research/lib/python3.7/site-packages/torch/nn/modules/module.py”,第 493 行,通话中 结果 = self.forward(*input, **kwargs) 文件“/Users/liam_adams/Documents/cs512/venv_research/lib/python3.7/site-packages/torch/nn/modules/sparse.py”,第 117 行,在转发 self.norm_type, self.scale_grad_by_freq, self.sparse) 文件“/Users/liam_adams/Documents/cs512/venv_research/lib/python3.7/site-packages/torch/nn/functional.py”,第 1506 行,在嵌入返回 torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse) RuntimeError: index out of range at ../aten/src/TH/generic/THTensorEvenMoreMath.cpp:193
这里的问题是嵌入的初始化维度与我的批处理数组的维度不同吗?我的batch_size将是不变的,但batch_max_len会随着每批而改变。这就是它在教程中的完成方式。
在这里找到答案https://discuss.pytorch.org/t/embeddings-index-out-of-range-error/12582
我正在将单词转换为索引,但我的索引基于单词总数,而不是vocab_size最常用单词的较小集合。
| 归档时间: |
|
| 查看次数: |
13587 次 |
| 最近记录: |