各主流框架在处理长序列方面表现如何
发布时间
阅读量:
阅读量
在NLP领域中,文本数据通常较长.为了使批处理训练成为可能,在模型设计时需要将文本pad至统一长度,并确保在此过程中不会影响模型的学习.避免对模型学习产生负面影响.
各主流深度学习框架在处理变长序列方面存在核心思路基本一致的特点,在具体实现细节上却存在显著差异。以下将重点介绍基于PyTorch、Keras以及TensorFlow这三大主流深度学习框架对NLP领域变长序列处理的具体方法及需要注意的关键点。
Pytorch
在PyTorch框架中,默认会使用torch.nn.utils.rnn模块中的pack_padded_sequence与pad_packed_sequence函数来处理变长序列问题。其中 packsformer的主要作用相当于对经过padding处理后的sequence执行pack操作(即将多余位置打包压缩),其主要功能是去除padding占位符;后者则是这一过程的逆向操作,在此基础上恢复sequence到其原始长度。
值得注意的是,在实际应用中应当特别关注包内填充序列的操作中涉及的重要参数之一是 pack_padded_sequence 方法中的 enforce_sorted 参数以及另一个关键参数 pad_packed_sequence 方法中的 total_length 参数。
pack_padded_sequence
注
全部评论 (0)
还没有任何评论哟~
