torch.nn.utils.rnn.pack_padded_sequence(input, length, batch_first=True) length should be sort
一开始我就去torch的官网:https://pytorch.org/docs/stable/generated/torch.nn.utils.rnn.pack_padded_sequence.html
torch.nn.utils.rnn.pack_padded_sequence(输入,长度,batch_first =假,enforce_sorted =真)
此函数接受至少具有二维的任何输入。您可以将其应用于包装标签,并与它们一起使用RNN的输出直接计算损失。可以PackedSequence通过访问对象的.data属性从对象中检索张量。
参数:
输入(Tensor)–填充可变长度序列的批处理
lengths(张量或list(int))–每个批处理元素的序列长度列表(如果作为张量提供,则必须在CPU上)。batch_first(bool,可选)–如果为True,则输入应采用 格式。B x T x *
force_sorted(bool,可选)–如果为True,则输入应包含按长度降序排列的序列。如果为
False,则输入将无条件排序。默认值:True。
然而我用了enforce_sorted =False,代码还一直报错。 torch.nn.utils.rnn.pack_padded_sequence()got an unexpected keyword argument:enforce_sorted
我看了我的torch版本,重点来了。。。。。
torch.__version__ =1.0.1
官方解释
在torch=1.1.0版本之前是没有enforce_sorted 这个参数的,所以下面,毫无疑问,torch重新安装,与此同时,我的环境还有tensorflow,版本为2.4.1,匹配的torch版本可以是1.8.0
官方没有torch的1.8.0的对应的torchvision版本,下面我就安装了torch=1.7.0版本的
pip uninstall torch 卸载以前1.0.1版本的torch
pip install torch==1.7.1 torchvision==0.8.2 -f https://download.pytorch.org/whl/torch_stable.html
安装成功!!! 大功告成。
接下来就可以愉快滴跑代码了O(∩_∩)O哈哈~