0

目前我正在阅读以下论文:“SqueezeNet:AlexNet-level accuracy with 50 x less parameters and <0.5 MB model size”。

在这4.2.3(激活函数层)中,有如下语句:

激活函数的影响几乎完全受限于训练阶段,它对推理期间的计算需求几乎没有影响。

我理解激活函数的影响如下。在卷积运算处理后,对特征图的每个单元应用激活函数(ReLU 等)。我认为此时的处理在训练模式和推理模式下都是相同的处理。为什么我们可以说它对训练有很大的影响,而对推理的影响不大呢?

有人可以解释一下吗。

4

1 回答 1

0

我认为此时的处理在训练模式和推理模式下都是相同的处理。

你是对的,激活函数的处理时间是一样的。但是训练时间测试时间还是有很大区别的:

  • 训练时间涉及对多个 epoch 应用前向传递,其中每个 epoch 通常由整个训练数据集组成。即使对于小型数据集,例如 MNIST(由 60000 个训练图像组成),这也需要数万次调用。确切的运行时影响取决于许多因素,例如 GPU 允许大量并行计算。但在任何情况下,它都比测试时的调用次数大几个数量级,通常单个批次只处理一次。

  • 最重要的是,您不应该忘记反向传递,其中激活的导数也适用于相同数量的时期。对于某些激活,导数可能会更加昂贵,例如eluvs reluelu具有需要更新的可学习参数)。

最后,您可能会忽略推理时 5% 的减速,因为神经网络的推理无论如何都非常快。但是您可能会关心单个架构的额外几分钟到几小时的训练,特别是如果您需要对多个模型进行交叉验证或超参数调整。

于 2018-04-15T11:15:33.357 回答