当前位置:   article > 正文

Keras中使用如Leaky ReLU等高级激活函数的方法_keras leakyrelu

keras leakyrelu

  在用Keras来实现CNN等一系列网络时,我们经常用ReLU作为激活函数,一般写法如下:

  1. from keras import layers
  2. from keras import models
  3. model = models.Sequential()
  4. model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
  5. model.add(layers.MaxPooling2D((2, 2)))
  6. model.add(layers.Conv2D(64, (3, 3), activation='relu'))
  7. model.add(layers.MaxPooling2D((2, 2)))
  8. model.add(layers.Conv2D(64, (3, 3), activation='relu'))

上面这段代码实现了一个基本的卷积神经网络,用ReLU作为激活函数,关于ReLU具体内容不做详细介绍。还有一些常用的主流激活函数:

  1. softmax: 在多分类中常用的激活函数,是基于逻辑回归的。
  2. Softplus:softplus(x)=log(1+e^x),近似生物神经激活函数,最近出现的。
  3. Relu:近似生物神经激活函数,最近出现的。
  4. tanh:双曲正切激活函数,也是很常用的。
  5. sigmoid:S型曲线激活函数,最常用的。
  6. hard_sigmoid:基于S型激活函数。
  7. linear:线性激活函数,最简单的。

主流的激活函数可以如上述例子一样通过名称直接使用,但是还有一些复杂的激活函数如:Leaky ReLU、PReLU是不可以这样直接使用的,必须使用add方法将高级激活函数作为层(layer)来使用,举例如下:

  1. from keras import layers
  2. from keras import models
  3. from keras.layers import LeakyReLU
  4. model = models.Sequential()
  5. model.add(layers.Conv2D(32, (3, 3), input_shape=(28, 28, 1)))
  6. model.add(LeakyReLU(alpha=0.05))
  7. model.add(layers.MaxPooling2D((2, 2)))
  8. model.add(layers.Conv2D(64, (3, 3)))
  9. model.add(LeakyReLU(alpha=0.05))
  10. model.add(layers.MaxPooling2D((2, 2)))
  11. model.add(layers.Conv2D(64, (3, 3))
  12. model.add(LeakyReLU(alpha=0.05))

这里我们在卷积层中去掉激活函数的参数,并在卷积层后加入高级激活层,下面来测试:

>>model.summary()

这里从整个网络结构的结果可以看出,卷积层后确实加入了一层新的激活层,使用的是LeakyReLU函数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/156599
推荐阅读
相关标签
  

闽ICP备14008679号