【问题标题】:About the impact of activation functions in CNN on computation time关于 CNN 中激活函数对计算时间的影响
【发布时间】:2018-09-25 05:18:32
【问题描述】:
目前我正在阅读以下论文:“SqueezeNet:AlexNet-level accuracy with 50 x less parameters and
在这4.2.3(激活函数层)中有如下语句:
激活函数的后果几乎完全是
受限于训练阶段,对训练的影响不大
推理期间的计算要求。
我理解激活函数的影响如下。
在卷积运算处理后,对特征图的每个单元应用激活函数(ReLU 等)。我认为此时的处理在训练模式和推理模式下都是相同的处理。为什么说它对训练影响很大,对推理影响不大?
谁能解释一下。
【问题讨论】:
标签:
machine-learning
neural-network
deep-learning
conv-neural-network
activation-function
【解决方案1】:
我认为此时的处理在训练模式和推理模式下都是相同的处理。
你是对的,激活函数的处理时间是一样的。
但是训练时间和测试时间还是有很大区别的:
训练时间涉及对多个 epoch 应用前向传递,其中每个 epoch 通常由整个训练数据集组成。即使对于小型数据集,例如 MNIST(由 60000 个训练图像组成),这也需要数万次调用。确切的运行时影响取决于许多因素,例如GPU 允许大量并行计算。但在任何情况下,它都比测试时的调用次数大几个数量级,通常单个批次只处理一次。
除此之外,您不应该忘记反向传递,其中激活的导数也适用于相同数量的时期。对于某些激活,导数可能会更加昂贵,例如elu vs relu(elu 有需要更新的可学习参数)。
最后,您可能会忽略推理时 5% 的减速,因为神经网络的推理无论如何都非常快。但是您可能会关心对一个单个架构进行额外几分钟到几小时的训练,尤其是当您需要对多个模型进行交叉验证或超参数调整时。