pack_padded_sequence;pad_packed_sequence
pack_padded_sequence 类似与一个压缩操作。
举个例子:
有一个tensor([[1,2,0], [3,0,0], [4,5,6]]),经过 pack_padded_sequence 之后会得到一个tensor([4,1,3,5,2,6]);再经过pad_packed_sequence之后会得到tensor([[1,2,0], [3,0,0], [4,5,6]])
问:为什么需要这个操作呢?
答:提高计算效率
逐行解释
from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence # 导包
seq = torch.tensor([[1,2,0], [3,0,0], [4,5,6]]) # shape: [batch_size, seq_len]
lens = [2, 1, 3] # 每个batch的非零个数,[1,2,0]非零个数为2,[3,0,0]非零个数为1,[4,5,6]非零个数为3
# batch_first 表示seq的第一维是batch_size
packed = pack_padded_sequence(seq, lens, batch_first=True, enforce_sorted=False)
print(packed)
# PackedSequence(data=tensor([4, 1, 3, 5, 2, 6]), batch_sizes=tensor([3, 2, 1]), sorted_indices=tensor([2, 0, 1]), unsorted_indices=tensor([1, 2, 0]))
seq_unpacked, lens_unpacked = pad_packed_sequence(packed, batch_first=True)
print(seq_unpacked)
# tensor([[1, 2, 0], [3, 0, 0], [4, 5, 6]])
print(lens_unpacked)
# tensor([2, 1, 3])
pack_padded_sequence;pad_packed_sequence相关推荐
- pack_padded_sequence 和 pad_packed_sequence
参考: pytorch中如何处理RNN输入变长序列padding pack_padded_sequence 和 pad_packed_sequence 大佬们写的都非常nice啊
- 通过例子10分钟快速看懂pad_sequence、pack_padded_sequence以及pad_packed_sequence
前言 import torch import torch.nn as nnfrom torch.nn.utils.rnn import pad_sequence from torch.nn.utils ...
- pack_padded_sequence和pad_packed_sequence详解
先提供一个官网解读 https://pytorch.org/docs/1.0.1/nn.html#torch.nn.utils.rnn.pack_padded_sequence 在使用深度学习特别是L ...
- NLP中各框架对变长序列的处理全解
©PaperWeekly 原创 · 作者|海晨威 学校|同济大学硕士生 研究方向|自然语言处理 在 NLP 中,文本数据大都是变长的,为了能够做 batch 的训练,需要 padding 到相同的长度 ...
- PyTorch中使用LSTM处理变长序列
使用LSTM算法处理的序列经常是变长的,这里介绍一下PyTorch框架下使用LSTM模型处理变长序列的方法.需要使用到PyTorch中torch.nn.utils包中的pack_padded_sequ ...
- 让阿宅不再寂寞的聊天机器人
阿宅爱上了阿美 在一个有星星的夜晚 飞机从头顶飞过 流星也划破那夜空 虽然说人生并没有什么意义 但是爱情确实让生活更加美丽 阿美嫁给了二富 在一个有香槟的晴天 豪车从眼前驶过 车笛也震动那烈阳 虽然说 ...
- pytorch中torch.nn.utils.rnn相关sequence的pad和pack操作
目录 一.pad_sequence 二.pack_padded_sequence 三.pad_packed_sequence 四.pack_sequence 自然语言处理任务中,模型的输入一般都是变长 ...
- transformer与vit
transformer结构,位置编码复现 https://wandb.ai/authors/One-Shot-3D-Photography/reports/-Transformer-Vmlldzo0M ...
- [论文阅读笔记70]基于token-token grid模型的信息抽取(5篇)
论文1: TPLinker: Single-stage Joint Extraction of Entities and Relations Through Token Pair Linking 年份 ...
- evaluate函数使用无效_使用Keras和Pytorch处理RNN变长序列输入的方法总结
最近在使用Keras和Pytorch处理时间序列数据,在变长数据的输入处理上踩了很多坑.一般的通用做法都需要先将一个batch中的所有序列padding到同一长度,然后需要在网络训练时屏蔽掉paddi ...
最新文章
- APRILTAG 标准图片:TAG25H9
- mysql model first,一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具
- Flex/Flash Builder里实用但被忽略的编译参数
- elk-logstash时区问题
- c语言实现链表结构6,用c语言实现的链表结构--数据结构实验
- cholesky分解java代码_Cholesky 分解(转)
- python透明图处理_python – 强制matplotlib图的背景是透明的
- SpringCloud学习笔记028---在SpringBoot中整合多数据源_实战项目
- 图例解析四大UML关系图使用
- Leetcode每日一题:381.insert-delete-getrandom-o1-duplicates-allowed(时间插入、删除和获取随机元素-允许重复)
- beego mysql session_Go语言之高级篇beego框架之cookie与session
- Java逐帧动画播放器V0.1.0
- 从极客到 CEO,开发者应该如何提升技术领导力?
- php exif信息,显示照片exif信息PHP代码
- DevOps系列之 —— 持续规划与设计(三)敏捷项目管理的方法【Kanban 与 Scrum】
- 小米基于OpenStack搭建私有云平台技术架构大揭秘!
- 固态硬盘linux提升,固态硬盘在Linux系统下提升使用率妙方
- Ubuntu下web开发,php编辑器推荐
- 分享一个超级狠的面试题与经验
- 什么软件可以测试自己的穿衣,心理测试:4个女孩,哪个穿衣风格跟你最像?秒测你的真实性格...