【发布时间】:2021-04-06 21:21:30
【问题描述】:
这可能是一个太基本的问题,但是文档中的 GRU 输入需要是 3 维是什么意思? PyTorch 状态的 GRU 文档:
输入形状(seq_len,batch,input_size):张量包含 输入序列的特征。输入也可以是打包的 变长序列。看 torch.nn.utils.rnn.pack_padded_sequence() 了解详情。
https://pytorch.org/docs/stable/generated/torch.nn.GRU.html
假设我正在尝试预测序列中的下一个 # 并拥有以下数据集:
n, label
1, 2
2, 3
3, 6
4, 9
...
如果我在猜测下一个输入时使用前两个输入对数据进行窗口化,则数据集变为:
t-2, t-1, t, label
na, na, 1, 2
na, 1, 2, 3
1, 2, 3, 6
2, 3, 4, 10
...
其中 t-x 仅表示使用先前时间步的输入值。
因此,在创建顺序加载器时,它应该为第 1、2、3、6 行创建以下张量:
inputs: tensor([[1,2,3]]) #shape(1,3)
labels: tensor([[6]]) #shape(1,1)
我目前将输入形状理解为(# 个批次,每个批次的 # 个特征) 输出形状为(# 个批次,每批次有 # 个输出特征)
我的问题是,输入张量是否应该看起来像:
tensor([[[1],[2],[3]]])
代表(# 个批次,#prior 要考虑的输入,每个输入的#features)
我想我最好尝试理解为什么在 PyTorch 中 GRU 的输入具有 3 个维度。第三维从根本上代表什么?如果我有一个像上面这样的转换数据集,如何正确地将它传递给模型。
编辑: 所以现在的模式是:
1 + 1 = 2
2 + 1 = 3
3 + 2 + 1 = 6
4+ 3 + 2 + 1 = 10
我希望 t-2、t-1 和 t 代表用于帮助猜测的每个时间步的特征。例如,在每个时间点都可能有 2 个特征。维度将是(1 个批量大小、3 个时间步长、2 个特征)。
我的问题是 GRU 是否采用扁平化输入:
(1 batch size, 3 time steps * 2 features per time step)
或未展平的输入:
(1 batch size, 3 time steps, 2 features per timestep)
我目前的印象是这是第二个输入,但想检查一下我的理解。
【问题讨论】:
-
你能告诉我如何用 3 个双特征向量表示这个序列:
[1, 2, 3]?
标签: python python-3.x machine-learning pytorch lstm