首页 > 编程知识 正文

代码怎么运行,pragma pack用法

时间:2023-05-03 12:10:03 阅读:174890 作者:2655

最近实现了基于BiGRU的项目。 因为batch的文本长度不同,如果不采取策略,在短文的基础上,就会遇到太多参与运算的[pad],最后的结果中有太多无效信息,这两个标题的函数。

以下内容是Pytorch的RNN的pack_padded_sequence (和pad_packed_sequence )- sbj123456789 -博客园为什么有pad和pack操作? 让我们看一个例子。 这个batch有五个样本。 如果不用pack和pad操作的话会有问题。 有什么问题呢? 例如,在上图中,句子“Yes”只有一个单词,但对多余的https://www.cn blogs.com/sbj 123456789/p/9834018.html进行了padding

目录

官方的说明

详细说明

官方说明首先贴上官方地址,有助于查看参数的详细内容:

pack _ padded _ sequence (: torch.nn.utils.rnn.pack _ padded _ sequence-py torch1. 10.0 documentation 33555 t5

torch.nn.utils.rnn.pad _ packed _ sequence—py torch 1.10.0 documentation https://py torch.org/docs/stable/gene

pack_padded_sequence ()的详细描述:压缩数据。 简单来说,去除[pad],仅使原始数据参加RNN运算。 具体来说,请看下图,这是一个包含五个文本的batch。 如果不使用此函数,以语句“Yes”为例,在实际参加运算时,会对多馀的pad符号进行padding,导致RNN通过非常多的无用字符。 这样得到的句子的表示有误差。

然后,计算方法如下图所示。

理想的计算方法是? Yes的计算结束了不是就结束了吗? 是的,确实如此。 正如大家所想的那样,有下图。

是的。 因此请参阅torch.nn.utils.rnn.pack _ padded _ sequence (

参数:

33558www.Sina.com/(Tensor ) -要压缩的tensor,batch格式。

http://www.Sina.com/(Tensororlist (int ) )- batch元素的长度、list类型(在tensor的情况下必须位于cpu上)。

3358www.Sina.com/(bool,optional )- ifTrue,输入顺序为[B,l,dim],B - batch size,L - max_length,dim -纬度

http://www.Sina.com/(bool,optional )- ifTrue,输入序列按长度降序为. IfFalse,输入序列可自由排列. Default:True。

importtorchfromtorch.nn.utils.rnnimportpack _ padded _ sequence,pad _ packed _ sequence seq=torch.tensor (3)

包顺序(data=tensor (4,1,3,5,2,6 ) )、batch_sizes=tensor )、sorted_indices=0) )是包的形式(在上述情况下,可知在打包的情况下,根据长度的降序信息对数组进行排列,然后对每列进行压缩,得到[ 4,1,3,5,2,6 ]。

压缩结束后,可以发送到RNN进行运算,那结束后怎么办? 计算结束后必须解冻啊。 于是出现了torch.nn.utils.rnn.pad _ packed _ sequence (sequence,batch_first=False,padding_value=0.0 )

参数:

33558 www.Sina.com/(packedsequence )添加pad的packed sequence数据

input(bool,optional )if true,输出格式[B,l,dim]

指定33558www.Sina.com/(float,optional ) pad的值

33558www.Sina.com/(int,optional(-ifnotnone ),指定补充的sentence长度为total_length。 如果total_length小于sequence的最大长度

seq_unpacked,lens _ unpacked=pad _ packed _ sequence (packed,batch_first=True ) print ) seq _ u u unpacked,led

tensor ([ 1,2,0 ]、[ 3,0,0 ]、[ 4,5,6 ] ) tensor ) [ 2,1,3 ] )这里可以看出一点。 最后的结果和我给的输入不同,我给的是3X4的tensor

另外,我在这上面也反复遇到ValueError,谈谈最后是怎么解决的吧。

主要关注pack_padded_sequence的输入input和lengths,并最终被锁定到:

input: [B,l,dim],tensor

lengths :列表

如果不违背上述两者的话,应该没有错误。

参考链接:

torch.nn.utils.rnn.pack _ padded _ sequence—py torch1. 10.0 documentation

torch.nn.utils.rnn.pad _ packed _ sequence—py torch1. 10.0 documentation

Pytorch的RNN的pack_padded_sequence (和pad_packed_sequence )- sbj123456789 -博客公园

思考和总结是前进的基础!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。