多对一 RNN 中的批量大小、时期和迭代
Batch size, Epoch, and iteration in a many-to-one RNN
当涉及到多对一 RNN 时,我主要无法定义批量大小。
我一直在看下面的文章:https://medium.com/@erikhallstrm/hello-world-rnn-83cd7105b767
这是在多对多RNN上,但是batch的定义还是让我很困惑。
多对一 RNN 的批量大小是多少?
这可能会回答我关于纪元和迭代的另外两个困惑。
在您 link 的示例中,序列是形状为 (N,)
的向量,因为序列包含 N
个二进制数。
如果构成序列的项目不是数字,而是向量,则每个序列的形状将是 (N, item_size)
。
RNN 同时并行处理多个序列。这就是我们所说的批处理。并行处理的序列数为 batch_size
,RNN 的输入形状将为 (batch_size, N)
.
在多对一场景下,batch size是一样的。唯一改变的是输出形状,因为不是生成大小为 (batch_size, N)
的输出,而是 (batch_size,)
(或 (batch_size, 1)
),因为每个序列都将映射到单个输出。
总结一下,batch size就是并行处理的序列数,所以多对多和多对一的情况没有区别。
关于您对 epoch/iteration 的混淆,epoch 通常是指对整个训练数据集进行一次迭代,而 iteration指的是处理一个批处理做一个SGD步骤。
当涉及到多对一 RNN 时,我主要无法定义批量大小。
我一直在看下面的文章:https://medium.com/@erikhallstrm/hello-world-rnn-83cd7105b767
这是在多对多RNN上,但是batch的定义还是让我很困惑。
多对一 RNN 的批量大小是多少?
这可能会回答我关于纪元和迭代的另外两个困惑。
在您 link 的示例中,序列是形状为 (N,)
的向量,因为序列包含 N
个二进制数。
如果构成序列的项目不是数字,而是向量,则每个序列的形状将是 (N, item_size)
。
RNN 同时并行处理多个序列。这就是我们所说的批处理。并行处理的序列数为 batch_size
,RNN 的输入形状将为 (batch_size, N)
.
在多对一场景下,batch size是一样的。唯一改变的是输出形状,因为不是生成大小为 (batch_size, N)
的输出,而是 (batch_size,)
(或 (batch_size, 1)
),因为每个序列都将映射到单个输出。
总结一下,batch size就是并行处理的序列数,所以多对多和多对一的情况没有区别。
关于您对 epoch/iteration 的混淆,epoch 通常是指对整个训练数据集进行一次迭代,而 iteration指的是处理一个批处理做一个SGD步骤。