导语
PaddlePaddle 高度支持灵活和高效的循环神经网络配置。本周进阶篇推文将围绕RNN模型展开,指导你如何在 PaddlePaddle 中配置和使用循环神经网络。本周推文目录如下:
2.11:【进阶篇】RNN配置
2.12:【进阶篇】Recurrent Group教程
2.13:【进阶篇】支持双层序列作为输入的Layer
2.14:【进阶篇】单双层RNN API对比介绍
编写|PaddlePaddle
排版|wangp
1
概述
在自然语言处理任务中,序列是一种常见的数据类型。一个独立的词语,可以看作是一个非序列输入,或者,我们称之为一个0层的序列;由词语构成的句子,是一个单层序列;若干个句子构成一个段落,是一个双层的序列。
双层序列是一个嵌套的序列,它的每一个元素,又是一个单层的序列。这是一种非常灵活的数据组织方式,帮助我们构造一些复杂的输入信息。
我们可以按照如下层次定义非序列,单层序列,以及双层序列。
在 PaddlePaddle中,下面这些Layer能够接受双层序列作为输入,完成相应的计算。
2
pooling
pooling 的使用示例如下,详细见 api_v2.layer_pooling 配置API(链接:http://paddlepaddle.org/docs/develop/api/en/v2/config/layer.html)
seq_pool = pooling(input=layer,
pooling_type=pooling.Max(),
agg_level=AggregateLevel.TO_SEQUENCE)
pooling_type 目前支持两种,分别是:pooling.Max()和pooling.Avg()。
agg_level=AggregateLevel.TO_NO_SEQUENCE 时(默认值):
agg_level=AggregateLevel.TO_SEQUENCE 时:
3
last_seq 和 first_seq
last_seq 的使用示例如下( api_v2.layer_first_seq 类似),详细见 api_v2.layer_last_seq 配置API(链接:http://paddlepaddle.org/docs/develop/api/en/v2/config/layer.html)
last = last_seq(input=layer,
agg_level=AggregateLevel.TO_SEQUENCE)
agg_level=AggregateLevel.TO_NO_SEQUENCE 时(默认值):
agg_level=AggregateLevel.TO_SEQUENCE 时:
4
expand
expand 的使用示例如下,详细见 api_v2.layer_expand 配置API(链接:http://paddlepaddle.org/docs/develop/api/en/v2/config/layer.html)
ex = expand(input=layer1,
expand_as=layer2,
expand_level=ExpandLevel.FROM_NO_SEQUENCE)
expand_level=ExpandLevel.FROM_NO_SEQUENCE 时(默认值):
expand_level=ExpandLevel.FROM_SEQUENCE 时:
本文分享自 PaddlePaddle 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!