使用固定嵌入时Seq2Seq转换模型中的问题

时间:2019-01-29 16:13:50

标签: pytorch

我已经使用PyTorch教程中的代码https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/seq2seq-translation.ipynb训练了一个模型。

我接下来要做的是使用固定嵌入训练模型。 对于训练集中的每个单词,我都有一组嵌入(长度为16)。例如:

looks   0.007668 -0.011884 -0.009672 0.011174 0.030010 0.023078 -0.028925 -0.003394 -0.028641 0.010982 -0.021261 0.009686 0.020191 -0.004228 -0.009142 -0.022826
like    0.007500 0.024508 -0.019484 -0.003581 0.007626 0.012839 0.003500 0.023110 0.008789 0.020518 -0.020819 -0.012393 0.011967 0.028991 0.010099 0.004167
that    0.004982 0.007892 0.020845 0.025090 -0.015644 -0.015740 -0.010126 -0.016822 0.007736 -0.023931 -0.014181 -0.031085 0.013599 0.027267 -0.013781 -0.028441

我使用了from_pretrained方法来提供自己的嵌入。我将编码器更改为:

class EncoderRNN(nn.Module):
    def __init__(self, input_size, hidden_size):
        super(EncoderRNN, self).__init__()
        self.hidden_size = hidden_size

        #self.embedding = nn.Embedding(input_size, hidden_size)
        embedds = np.load('embedds.dat')
        embedds = torch.from_numpy(embedds)
        embedds = embedds.type(torch.FloatTensor)     #x = x.type(torch.cuda.FloatTensor)
        self.embedding = nn.Embedding.from_pretrained(embedds)


        self.gru = nn.GRU(hidden_size, hidden_size)

    def forward(self, input, hidden):
        embedded = self.embedding(input).view(1, 1, -1)
        #print(embedded.size())
        #print(embedded)
        output = embedded
        output, hidden = self.gru(output, hidden)
        return output, hidden

    def initHidden(self):
        return torch.zeros(1, 1, self.hidden_size, device=device)

但是当我训练时发生错误:

  

RuntimeError:索引超出范围   c:\ programdata \ miniconda3 \ conda-bld \ pytorch_1533090623466 \ work \ aten \ src \ th \ generic / THTensorMath.cpp:352

有人可以提供任何帮助吗? 预先感谢

0 个答案:

没有答案