程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python Pytorch 在 nn.Embedding 中出现索引错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python Pytorch 在 nn.Embedding 中出现索引错误?

开发过程中遇到Python Pytorch 在 nn.Embedding 中出现索引错误的问题如何解决?下面主要结合日常开发的经验,给出你关于Python Pytorch 在 nn.Embedding 中出现索引错误的解决方法建议,希望对你解决Python Pytorch 在 nn.Embedding 中出现索引错误有所启发或帮助;

我遇到了嵌入问题:IndexError: index out of range in self 如下所示:

 y = self.ensemble(x,mask)
  file "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py",line 889,in _call_impl
    result = self.forWARD(*input,**kwargs)
  file "/home/lucasgongora/documents/KTH/Courses/Thesis/tracab-masters-ball-from-context/model/networks.py",line 33,in forWARD
    src = self.encoder(srC) * math.sqrt(self.ninp)
  file "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py",**kwargs)
  file "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/sparse.py",line 145,in forWARD
    return F.embedding(
  file "/usr/local/lib/python3.8/dist-packages/torch/nn/functional.py",line 1913,in embedding
    return torch.embedding(weight,input,padding_IDx,scale_grad_by_freq,sparsE)
IndexError: index out of range in self

对于上下文,我正在运行一个具有维度 (batch_size x 50 x 48) 的数据库 x。我需要输入这个配置。我正在 transformer 网络上训练它

class transformerModel(nn.ModulE):

    def __init__(self,ntoken,ninp,nhead,nhID,nlayers,dropout=0.5):
        super(transformerModel,self).__init__()
        from torch.nn import transformerEncoder,transformerEncoderLayer
        self.model_type = 'transformer'
        self.pos_encoder = positionalEnCoding(ninp,dropout)
        encoder_layers = transformerEncoderLayer(ninp,dropout)
        self.transformer_encoder = transformerEncoder(encoder_layers,nlayers)
        self.encoder = nn.Embedding(ntoken,ninp)
        self.ninp = ninp
        self.decoder = nn.linear(ninp,ntoken)

        self.init_weights()

    def generate_square_subsequent_mask(self,sz):
        mask = (torch.triu(torch.ones(sz,sz)) == 1).transpose(0,1)
        mask = mask.float().masked_fill(mask == 0,float('-inf')).masked_fill(mask == 1,float(0.0))
        return mask

    def init_weights(self):
        initrange = 0.1
        self.encoder.weight.data.uniform_(-initrange,initrangE)
        self.decoder.bias.data.zero_()
        self.decoder.weight.data.uniform_(-initrange,initrangE)

    def forWARD(self,src,src_mask):
        src = self.encoder(srC) * math.sqrt(self.ninp)
        src = self.pos_encoder(srC)
        output = self.transformer_encoder(src,src_mask)
        output = self.decoder(output)
        return output

class positionalEnCoding(nn.ModulE):

    def __init__(self,d_model,dropout=0.1,max_len=5000):
        super(positionalEnCoding,self).__init__()
        self.dropout = nn.Dropout(p=dropout)

        pe = torch.zeros(max_len,d_model)
        position = torch.arange(0,max_len,dtype=torch.float).unsqueeze(1)
        div_term = torch.exp(torch.arange(0,2).float() * (-math.log(10000.0) / d_model))
        pe[:,0::2] = torch.sin(position * div_term)
        pe[:,1::2] = torch.cos(position * div_term)
        pe = pe.unsqueeze(0).transpose(0,1)
        self.register_buffer('pe',pE)

    def forWARD(self,X):
        x = x + self.pe[:x.size(0),:]
        return self.dropout(X)



class Ensemble_Networks(nn.ModulE):
    def __init__(self,num_output_target,num_in_players,num_output_players,dim_output_players,num_features,num_inds_players=64,dim_hIDden_players=128,num_heads_players=4):
        super(Ensemble_Networks,self).__init__()

        self.ensemble = transformerModel(ntoken=48,ninp=50,nhead=1,nhID=200,nlayers=2,dropout=0.5)

    def forWARD(self,x,mask):
        y = self.ensemble(x,mask)
        return y

相信错误在:self.ensemble = transformerModel(ntoken=48,dropout=0.5) 其中我找不到合适的变量维度功能。

我正在运行类似的东西:

@H_190_5@mask = self.generate_square_subsequent_mask(50)
        for Epochs in trange(self.n_epochs,desc='Epoch'):
                for step in range(iter_sizE):
                    x,y = data_import.create_batches(x_Train,y_Train)
                    y_pred = self.model(x,mask)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的Python Pytorch 在 nn.Embedding 中出现索引错误全部内容,希望文章能够帮你解决Python Pytorch 在 nn.Embedding 中出现索引错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:Python