当前位置: 首页 > news >正文

pytorch 笔记:PAD_PACKED_SEQUENCE 和PACK_PADDED_SEQUENCE

1 PACK_PADDED_SEQUENCE

1.0 功能

  • 将填充的序列打包成一个更加紧凑的形式
  • 这样RNN、LSTM和GRU等模型可以更高效地处理它们,因为它们可以跳过不必要的计算

1.2 基本使用方法

torch.nn.utils.rnn.pack_padded_sequence(input, lengths, batch_first=False, enforce_sorted=True)

1.3 参数

input
  • 一个大小为T×B×*的张量
    • T是最长序列的长度
    • B是批次大小
    • *表示任意数目的维度
lengths每个批次元素的序列长度的列表
batch_first如果batch_first是True,那么期望的输入格式是B x T x *
enforce_sorted

如果设置了enforce_sorted=True,序列应该按长度降序排列。这意味着input[:,0]应该是最长的序列,input[:,B-1]应该是最短的。

如果enforce_sorted设置为False,输入序列将无条件地被排序。

1.4 举例 

import torch
from torch.nn.utils.rnn import pack_padded_sequence# 输入序列
input_seq = torch.tensor([[6, 8, 9, 0], [5, 7, 0, 0], [1, 0, 0, 0]])# 序列的实际长度
lengths = [3, 2, 1]# 使用pack_padded_sequence
packed = pack_padded_sequence(input_seq, lengths, batch_first=True)packed
#PackedSequence(data=tensor([6, 5, 1, 8, 7, 9]), batch_sizes=tensor([3, 2, 1]), sorted_indices=None, unsorted_indices=None)

2 pad_packed_sequence

对一个已打包的序列进行解包,这个打包的序列通常是通过pack_padded_sequence函数从一个填充的序列得到的

2.1 基本使用方法

torch.nn.utils.rnn.pad_packed_sequence(sequence, batch_first=False, padding_value=0.0, total_length=None)

2.2 参数说明

sequence要解包的已打包序列
batch_first指示输出的维度顺序。如果为True,输出将为B x T x *格式,否则为T x B x *格式
padding_value用于填充的值,通常是0
total_length可选的。如果指定,输出序列将被填充到这个长度

2.3 举例

还是之前的packed

from torch.nn.utils.rnn import pad_packed_sequencepad_packed_sequence(packed)
'''
(tensor([[6, 5, 1],[8, 7, 0],[9, 0, 0]]),tensor([3, 2, 1]))
'''pad_packed_sequence(packed, batch_first=True,total_length=5)
'''
(tensor([[6, 8, 9, 0, 0],[5, 7, 0, 0, 0],[1, 0, 0, 0, 0]]),tensor([3, 2, 1]))
'''

http://www.lryc.cn/news/220378.html

相关文章:

  • Ubuntu 创建用户
  • 华为政企路由器产品集
  • 性能测试知多少---了解前端性能
  • Docker-compose容器群集编排管理工具
  • Python 深度学习导入的一些包的说明
  • 劲升逻辑与安必快、鹏海运于进博会签署合作协议,助力大湾区外贸高质量发展
  • hivesql,sql 函数总结:
  • 前端js实现井字游戏和版本号对比js逻辑【适用于vue和react】
  • unity 通过Andriod arr 访问 手机自带的浏览器
  • MySQL -- 索引
  • 23ccpc(最长上升子序列题解)
  • BUUCTF easycap 1
  • [LeetCode]-160. 相交链表-141. 环形链表-142.环形链表II-138.随机链表的复制
  • 聊一聊关于手机Charge IC的电流流向
  • 【k8s】pod调度——亲和,反亲和,污点,容忍
  • 分享者 - 携程旅游创作者搬砖项目图文教程
  • vite配置.env环境变量文件,开发环境,测试环境,预发布环境,生产环境
  • 0003Java安卓程序设计-springboot基于Android的学习生活交流APP
  • Java8 时间字符串校验是否为对应的日期格式
  • 2023.11.6联赛总结
  • UE5——源码阅读——9——引擎预初始化
  • 报错Could not resolve placeholder ‘driver‘ in value “${driver}“
  • Rust编程基础核心之所有权(下)
  • 高防CDN:企业网络安全的坚强后盾
  • gitlab 设置 分支只读
  • Spring Boot 面试题——常用注解
  • RabbitMQ(高级特性) 设置队列所有消息存活时间
  • 刷题学习记录
  • WPF中依赖属性及附加属性的概念及用法
  • Golang爬虫封装