关于 CNN 中激活函数对计算时间的影响
About the impact of activation functions in CNN on computation time
目前我正在阅读以下论文:"SqueezeNet: AlexNet-level accuracy with 50 x fewer parameters and <0.5 MB model size"。
在这个4.2.3(Activation function layer)中,有如下语句:
The ramifications of the activation function is almost entirely
constrained to the training phase, and it has little impact on the
computational requirements during inference.
我对激活函数的影响理解如下。
经过卷积运算处理后,将激活函数(ReLU 等)应用于特征图的每个单元。我认为此时的处理在训练模式和推理模式下都是一样的处理。为什么可以说对training影响大而对inference影响不大呢?
谁能解释一下。
I think that processing at this time is the same processing in both the training mode and the inference mode.
你说得对,激活函数的处理时间是一样的。
但是训练时间和测试时间之间还是有很大区别的:
训练时间涉及对多个时期应用前向传播,其中每个时期通常由整个训练数据集组成。即使对于小型数据集,如 MNIST(由 60000 张训练图像组成),这也需要数万次调用。确切的运行时影响取决于许多因素,例如GPU 允许大量并行计算。但在任何情况下,它都比测试时的调用次数大几个数量级,而测试时通常只处理一次单个批次。
最重要的是你不应该忘记向后传递,其中激活的导数也应用于相同数量的时期。对于某些激活,导数可能要昂贵得多,例如elu
vs relu
(elu
具有需要更新的可学习参数)。
最后,您可能会忽略推理时 5% 的减速,因为神经网络的推理无论如何都非常快。但是您可能关心 单一 架构的额外几分钟到几小时的训练,尤其是当您需要对多个模型进行交叉验证或超参数调整时。
目前我正在阅读以下论文:"SqueezeNet: AlexNet-level accuracy with 50 x fewer parameters and <0.5 MB model size"。
在这个4.2.3(Activation function layer)中,有如下语句:
The ramifications of the activation function is almost entirely constrained to the training phase, and it has little impact on the computational requirements during inference.
我对激活函数的影响理解如下。 经过卷积运算处理后,将激活函数(ReLU 等)应用于特征图的每个单元。我认为此时的处理在训练模式和推理模式下都是一样的处理。为什么可以说对training影响大而对inference影响不大呢?
谁能解释一下。
I think that processing at this time is the same processing in both the training mode and the inference mode.
你说得对,激活函数的处理时间是一样的。 但是训练时间和测试时间之间还是有很大区别的:
训练时间涉及对多个时期应用前向传播,其中每个时期通常由整个训练数据集组成。即使对于小型数据集,如 MNIST(由 60000 张训练图像组成),这也需要数万次调用。确切的运行时影响取决于许多因素,例如GPU 允许大量并行计算。但在任何情况下,它都比测试时的调用次数大几个数量级,而测试时通常只处理一次单个批次。
最重要的是你不应该忘记向后传递,其中激活的导数也应用于相同数量的时期。对于某些激活,导数可能要昂贵得多,例如
elu
vsrelu
(elu
具有需要更新的可学习参数)。
最后,您可能会忽略推理时 5% 的减速,因为神经网络的推理无论如何都非常快。但是您可能关心 单一 架构的额外几分钟到几小时的训练,尤其是当您需要对多个模型进行交叉验证或超参数调整时。