Pytorch:为什么批处理是默认 LSTM 中的第二个维度?

Pey*_*man 5 machine-learning deep-learning lstm pytorch

PyTorch LSTM文档中写道:

\n
\n

batch_first \xe2\x80\x93 如果为 True,则提供输入和输出张量\nas(batch、seq、feature)。默认值:假

\n
\n

我想知道为什么他们选择默认批量维度作为第二个而不是第一个。对我来说,将我的数据成像[batch, seq, feature][seq, batch, feature]. 第一个对我来说更直观,第二个则违反直觉。

\n

我在这里询问这背后是否有任何原因,以及您是否可以帮助我对此有一些了解。

\n

Jos*_*tar 5

据我所知,还没有一个非常合理的答案。如今,它与其他框架不同,正如您所说,形状更直观,例如 Keras,但只是出于与旧版本的兼容性原因,更改修改向量维度的默认参数可能会破坏一半如果模型的维护者更新到较新的 PyTorch 版本,那么模型就会存在。

一开始的想法可能是首先设置时间维度来简化随着时间的推移的迭代过程,所以你可以做一个

for t, out_t in enumerate(my_tensor)
Run Code Online (Sandbox Code Playgroud)

而不必做一些视觉上的事情,例如访问my_tensor[:, i]和迭代range(time).