Pytorch torch.nn.utils.rnn.pad_sequence 介绍

torch.nn.utils.rnn.pad_sequence 是 PyTorch 中一个用于填充序列的实用函数,它主要用于处理长度不一的序列数据,将这些序列填充到相同的长度,以便能将它们组合成一个批量(batch)输入到神经网络中。以下是详细介绍:

函数定义

复制代码
torch.nn.utils.rnn.pad_sequence(sequences, batch_first=False, padding_value=0.0)

参数解释

  • sequences :这是一个必需的参数,是一个由 torch.Tensor 组成的列表,列表中的每个 Tensor 代表一个序列。这些序列的长度可以不同,但其他维度的大小必须一致。
  • batch_first :这是一个布尔类型的可选参数,默认值为 False。当 batch_firstFalse 时,输出的 Tensor 的形状为 (max_seq_length, batch_size, ...);当 batch_firstTrue 时,输出的 Tensor 的形状为 (batch_size, max_seq_length, ...)
  • padding_value :这是一个可选参数,默认值为 0.0。它指定了用于填充序列的数值。

返回值

返回一个填充后的 torch.Tensor,其形状根据 batch_first 参数的值而定。

使用场景

在自然语言处理(NLP)、语音识别等领域,输入的序列数据(如句子、语音片段)长度通常是不一致的。在将这些数据输入到神经网络之前,需要将它们填充到相同的长度,以便进行批量处理。torch.nn.utils.rnn.pad_sequence 就是为解决这个问题而设计的。

示例代码

复制代码
import torch
from torch.nn.utils.rnn import pad_sequence

# 创建长度不同的序列
seq1 = torch.tensor([1, 2, 3])
seq2 = torch.tensor([4, 5])
seq3 = torch.tensor([6])

# 将序列放入列表中
sequences = [seq1, seq2, seq3]

# 填充序列,batch_first 为 False
padded_seq_false = pad_sequence(sequences, batch_first=False, padding_value=0)
print("batch_first=False 时的填充结果:")
print(padded_seq_false)
print("形状:", padded_seq_false.shape)

# 填充序列,batch_first 为 True
padded_seq_true = pad_sequence(sequences, batch_first=True, padding_value=0)
print("batch_first=True 时的填充结果:")
print(padded_seq_true)
print("形状:", padded_seq_true.shape)

在这个示例中,我们创建了三个长度不同的序列,然后使用 pad_sequence 函数将它们填充到相同的长度。通过设置 batch_first 参数为 FalseTrue,我们可以看到输出的 Tensor 形状的变化。

通过使用 torch.nn.utils.rnn.pad_sequence 函数,你可以方便地处理长度不一致的序列数据,将它们填充到相同的长度,以便进行批量处理。

相关推荐
聆风吟º14 分钟前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys21 分钟前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_567821 分钟前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子24 分钟前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
ValhallaCoder28 分钟前
hot100-二叉树I
数据结构·python·算法·二叉树
智驱力人工智能1 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144871 小时前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile1 小时前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算
人工不智能5771 小时前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert
盟接之桥1 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造