如何解决什么时候应该在CNN中使用“ Sigmoid”和“ relu”功能?
要为分类图像实现CNN模型,我们需要使用 Sigmoid 和 relu 函数。但是我很困惑这些的用途。
解决方法
如果您正在使用常规的CNN进行图像分类,则输出层将包含N个神经元,其中N是您要识别的图像类别的数量。您希望每个输出神经元都代表您观察到每个图像类别的概率。 sigmoid function非常适合表示概率。其域是所有实数,但范围是0到1。
对于不是输出层的网络层,也可以使用S型。从理论上讲,任何非线性传递函数都将在神经网络的内层起作用。但是,出于实际原因,不使用S型。其中一些原因是:
-
Sigmoid需要大量计算。
-
Sigmoid函数的斜率在输入为 远离零,这会减慢梯度下降学习的速度。
-
现代神经网络有很多层,如果您有几层 神经网络中的各层之间具有S型函数, 最终可能会获得零学习率。
ReLU function解决了许多S型问题。它很容易快速计算。只要输入为正,ReLU的斜率就为-1,这提供了很强的下降斜率。但是,ReLU并不限于0-1范围,因此,如果将其用作输出层,则不能保证它能够代表概率。