Python 3.x 我使用pack_padded_sequence()并将其放入lstm层,但我得到了start()+;长度()超过维度大小()。错误

Python 3.x 我使用pack_padded_sequence()并将其放入lstm层,但我得到了start()+;长度()超过维度大小()。错误,python-3.x,machine-learning,neural-network,nlp,pytorch,Python 3.x,Machine Learning,Neural Network,Nlp,Pytorch,在我的模型中,有一个嵌入层,一个conv1d层,一个lstm层。我用的是火把。 我的问题是: 当我将pack=pack\u padded\u sequence(conv)放入lstm层时,我得到了RuntimeError:start(pack[0].size(0))+长度(1)超过了维度大小(pack[0].size(0))。error。为什么我会犯这个错误?什么意思??请帮帮我 类CNNModel(nn.Module): def uuu init uuuu(self,vocab u size:

在我的模型中,有一个嵌入层,一个conv1d层,一个lstm层。我用的是火把。 我的问题是: 当我将
pack=pack\u padded\u sequence(conv)
放入lstm层时,我得到了
RuntimeError:start(pack[0].size(0))+长度(1)超过了维度大小(pack[0].size(0))。
error。为什么我会犯这个错误?什么意思??请帮帮我

类CNNModel(nn.Module):
def uuu init uuuu(self,vocab u size:int,embed u size:int,out u size:int,filter u size:List[int],hidden u size:int,
图层编号:int,焊盘编号:int=1):
super()。\uuuu init\uuuuu()
self.vocab_size=vocab_size
self.embed\u size=嵌入大小
self.pad=pad
self.out\u size=out\u size
self.filter\u size=过滤器大小
self.hidden\u size=隐藏的大小
self.layer\u num=layer\u num
self.embed=nn.Embedding(
num_embeddings=self.vocab_size,
嵌入尺寸=自嵌入尺寸,
padding_idx=self.pad,
)
self.cnn=nn.Conv1d(
in_channels=self.embed_size,
out\u通道=自我输出大小,
kernel\u size=self.filter\u size[0],
偏差=正确,
)
self.lstm=nn.lstm(
输入大小=自输出大小,
隐藏大小=self.hidden大小,
num\u layers=self.layer\u num,
双向=真,
批次_first=True,
)
def转发(自身、批次):
embed=self.embed(batch.word[0])#[B(64),L(465),F(256)]
嵌入=嵌入。转置(1,2)#[B(64),L(256),F(465)]
conv=self.cnn(嵌入)#[B(64),F(64),L(465)]
conv=conv.transpose(1,2)#[B(64),L(465),F(64)]
编码=包填充序列(conv,
[tensor.item()表示batch.word[1]中的张量,
批次(第一个=真)
打印(f'encoding=>{encoding[0].size()}')#[8093,64]
打印(f'encoding=>{encoding[1].size()}')#[465]
_,(h,_)=self.lstm(编码)#[bsz,sln,dim3]
打印(f'h=>{h}')
结果如下

 File "/Users/user_name/anaconda3/lib/python3.7/site-packages/torch/nn/modules/rnn.py", line 182, in forward
    self.num_layers, self.dropout, self.training, self.bidirectional)
RuntimeError: start (8093) + length (1) exceeds dimension size (8093).

这可能是一个逐个错误。尝试将端点修改为1