machine-learning - 通常如何对 RNN/LSTM 的序列数据执行批处理
问题描述
这个Udacity 课程笔记本以我不直观的方式批处理数据。
对于长序列的数据,他们首先截断数据,使其可以被batch_size
. 接下来,他们.reshape()
的数据是(batch_size, -1)
。然后他们在这些批次的子序列上创建一个滑动窗口。当滑动窗口超出范围时,它们会在末尾添加假数据(通过环绕到)。
这个提供的图形可能比我能解释得更好:
我只是想知道这种做法是否正常,或者是否有其他方式。批次是不连续的子序列似乎很奇怪。这不会使解释单个批次的输出变得困难吗?
有更好的方法吗?视频中的女人字面意思是说“我不知道为什么会这样,但我以前见过,而且网络训练很好”。
解决方案
您应该从 pytorch 查看有关填充序列的文档。(如果我有更多的经验,我会给你一个更详细的解释,但如果我从来没有真正理解过他们的话!)
名字有点混乱。但这个想法是你创建一个具有批量中最大序列大小的张量。其他序列将被填充以与 bach 中最长的序列具有相同的大小。这个打包的填充序列被提供给循环模型(RNN、LTMS、GRU,你最喜欢的)。有了它,您可以支持具有较小内存限制的任意序列。
推荐阅读
- docker - fail2ban 不会开始在监狱中使用 nextcloud.log
- javascript - 尝试访问 TypeScript 中的静态方法时,类型“typeof UserApiController”上不存在属性“users_index”
- git - Github Repo 上不同协作方式的优缺点
- ruby-on-rails - Rails cron 作业没有在 Docker 上运行
- youtube - 上传新的 YouTube 视频时,是否可以使用 YouTube API 自动创建评论?
- python - Centos 7 上可能的 python3.8 构建问题
- python - Python 上下文管理和冗长
- swift - 文件目录更改每次重启 Swift iOS
- php - 如何从客户端接收代码codeigniter API中的数据
- python - 寻找洞察力并应用 ML 流程