【发布时间】:2020-07-29 01:19:18
【问题描述】:
我试图了解 PyTorch 是如何在小批量上实际执行前向传递的。当网络处理小批量时,小批量中的每个示例(例如每个图像)是否一个接一个地单独发送?还是小批量中的所有样本同时转发?
当通过网络转发示例时,额外的内存需求是每一层的激活。并且只要网络不占用整个 GPU,那么似乎可以同时存储这些激活的多个实例。然后可以使用每个实例化来将一个示例的激活存储在小批量中。因此,可以同时通过网络发送多个示例。但是,我不确定这是否真的在实践中完成。
我做了一些简单的实验,前向传递的时间大致与 minibatch 的大小成正比。这表明这些示例是一个接一个地发送的。如果是这样,那为什么人们说 minibatch 越大训练越快呢?似乎整个 epoch 的处理时间不会取决于 minibatch 的大小。
【问题讨论】:
-
请在问题中发布您的简单实验代码和结果。
标签: pytorch