pytorch - 函数 nn.LSTM 在 batches/seq_len 中的行为如何?
问题描述
我目前正在学习将nn.LSTM与 pytorch 一起使用,并且不得不询问该功能是如何工作的。
基本上我正在尝试提供我的数据集矩阵(M x N)。由于数据集是一个矩阵,我想使用Dataloader (utils.data.Dataset) 将数据集递归地(作为时间步长)馈送到 LSTM 网络中。
我感到困惑的是输入的大小(seq_len,batch,input_size)
假设我正在使用 batch_size=10 获取我的 data_loader。为了生成具有正确形式的 train_loader,我必须将 (M x N) 的先前大小变成包括可以简单地转换为 (M/seq_len, seq_len, N) 的 sequence_length 的大小。
然后我的 nn.LSTM 的输入大小将是: (M/seq_len/batch_size, seq_len, N)
所以,我的主要问题来了:
如果我将此数据大小输入 LSTM 模型 nn.LSTM(N, hidden_size),LSTM 模型是否已经在整个批次中进行递归前馈?
我也对 seq_len 感到困惑,当 seq_len>1 时,输出会得到 seq_len 的维度。这是否意味着输出包含序列的递归操作?
我不确定我是否把问题说清楚了,但是我的理解变得很混乱..lol 希望有人可以帮助我组织正确的理解。
解决方案
是的,只要每个样本的序列长度相同(这里似乎就是这种情况)。
torch.nn.utils.rnn.pad_sequence
如果没有,例如,您必须填充。是的,LSTM 扩展到每个时间步,并且每个时间步都有输出。因此,您不必分别为每个元素应用它。
推荐阅读
- ios - objc 方法在我的 JS 端没有被识别
- linux - AWS EC2 packet_write_wait:连接到 UNKNOWN 端口 65535:管道损坏
- ruby-on-rails - 添加新测试时,以前工作测试的权限被拒绝
- javascript - 问:在自执行功能中,谁被分配了数字 10
- windows - 浏览到我的自定义本地 HTTPS 服务器时如何避免无效证书警告?
- android - 如何使用 Kotlin 过滤 RecyclerView?
- javascript - React 类型号 textInput 替换逗号
- html - 如何对齐表格中的两列 | HTML 电子邮件签名
- amazon-dynamodb - 我可以在二级索引中查询 DynamoDB 中的值列表吗?
- mysql - 如何使用 Powershell 从主机到运行 MySQL 服务器的容器执行文件中的 MySQL 命令?