任何人都可以解释时间主要和批量主要的数据是什么意思以及它们之间的区别是什么?
答案 0 :(得分:16)
尝试用最简单的术语表示:这些是相同数据的不同表示(或排列)。
例如,假设你有这样的数据(只是为了说明而不是真实的数据):
1 11 21 31
2 12 22 32
3 13 23 33
...
100 111 121 131
...其中每行对应一个训练输入,每列对应一个不同的特征。矩阵的大小为(batch_size, features)
,其中batch_size=100
和features=4
。
接下来,在某些情况下,您可能会将转置矩阵作为输入(例如,它是上一步的输出):
1 2 3 ... 100
11 12 13 ... 111
21 22 23 ... 121
31 32 33 ... 131
在这种情况下,矩阵形状为(features, batch_size)
。注意:数据本身不会改变。仅更改了阵列尺寸:批次是第一个示例中的0轴,第二个示例中是1轴。另请注意,可以非常轻松有效地交换不同的演示文稿。在tensorflow中,可以使用tf.transpose
完成。
当谈到RNN时,张量通常会达到3+级,但这个想法保持不变。如果输入为(batch_size, sequence_num, features)
,则称为批量主要,因为0轴是batch_size
。如果输入为(sequence_num, batch_size, features)
,则同样称为时间主要。 features
始终是最后一个维度(至少我不知道它不是真实情况),因此命名没有进一步的变化。
根据网络结构的不同,可能会特别指出批次或时间为0轴,因此输入数据的格式很重要。并且取决于先前的层,可以将这些表示中的任一个馈送到RNN中。因此,可能需要通过库函数或调用者从一种排列到另一种排列的转换。据我所知,批量主要是tensorflow和keras中的默认值,所以它简单地归结为在RNN之前从层生成的形状。
再次:批次主要表示与时间主要表示之间存在一对一的对应关系。任何张量都可以表示为两者。但对于特定的实现,可以预期或需要其中一个。