【发布时间】:2018-11-06 11:55:07
【问题描述】:
我开始使用 pytorch,并使用其中一个教程作为参考,使用了一些转换来构建以下模型:
model = torch.nn.Sequential(
torch.nn.Linear(D_in, H),
torch.nn.ReLU(),
torch.nn.Linear(H, D_out),
)
我想使用 LSTM 网络,所以我尝试了以下操作:
model = torch.nn.Sequential(
torch.nn.LSTM(D_in, H),
torch.nn.Linear(H, D_out)
)
这给了我这个错误:
RuntimeError:输入必须有 3 个维度,得到 2 个维度
为什么我会看到这个错误?我预计我对如何在 pytorch 中链接转换(网络?)的理解存在根本性的错误......
编辑
在遵循@esBee 的建议后,我发现以下运行正常。这是因为 LSTM 期望输入具有以下维度:
input of shape (seq_len, batch, input_size):包含输入序列特征的张量。输入也可以是打包的变长序列
local_x = local_x.unsqueeze(0)
y_pred, (hn, cn) = layerA(local_x)
y_pred = y_pred.squeeze(0)
y_pred = layerB(y_pred)
但是,我的原始训练/测试数据集只有序列长度 1 的事实让我觉得我做错了什么。这个参数在神经网络中的作用是什么?
【问题讨论】:
标签: deep-learning lstm pytorch