激活函数学习(2022.2.28)
Posted jing_zhong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了激活函数学习(2022.2.28)相关的知识,希望对你有一定的参考价值。
激活函数学习(2022.2.28)
- 所用软件及环境(Matlab+PyCharm+Python+Tensorflow+Keras+PyTorch)
- 1、激活函数简介
- 2、常用的激活函数(公式+曲线图)
- 3 Matlab代码绘制各激活函数曲线图
- 4、Python代码绘制各函数曲线图
所用软件及环境(Matlab+PyCharm+Python+Tensorflow+Keras+PyTorch)
|
|
1、激活函数简介
1.1 Activation Function
Activation Function
(激活函数)就是一个从x
到y
的映射函数y=f(x)
,它主要应用在深度学习和神经网络中的神经元,负责将输入Input
通过函数作用后映射到输出Output
。
1.2 PyTorch激活函数API
PyTorch
官网上API文档可以看到torch.nn和torch.nn.functional都介绍到所用的激活函数,包含nn.Softmin、 nn.Softmax、nn.Softmax2d、nn.LogSoftmax、nn.AdaptiveLogSoftmaxWithLoss、nn.GLU、nn.Threshold、nn.Tanhshrink、nn.Tanh、nn.Softsign、nn.Softshrink、nn.Softplus、nn.Mish、nn.SiLU、nn.Sigmoid、nn.GELU、nn.CELU、nn.SELU、nn.RReLU、nn.ReLU6、nn.ReLU、nn.PReLU、nn.MultiheadAttention、nn.LogSigmoid、nn.LeakyReLU、nn.Hardswish、nn.Hardswish、nn.Hardtanh、nn.Hardsigmoid、nn.Hardshrink、nn.ELU等。
1.3 TensorFlow + Keras激活函数API
Keras
官网tf.keras.activations和TensorFlow
官网tf.keras.activations的API文档介绍其所用到的激活函数有:relu、sigmoid、softmax、softplus、softsign、tanh、selu、elu、exponential,deserialize、elu、exponential、gelu、get、hard_sigmoid、linear、reluseluserializesigmoidsoftmax、softplus、softsign、swish、tanh等。
2、常用的激活函数(公式+曲线图)
2.1 线性激活函数
2.1.1 Linear
y
=
x
y=x
y=x
import tensorflow as tf
a = tf.constant([-3.0,-1.0, 0.0,1.0,3.0], dtype = tf.float32)
b = tf.keras.activations.linear(a)
print(b)
运行结果:
tf.Tensor([-3. -1. 0. 1. 3.], shape=(5,), dtype=float32)
2.2 非线性激活函数
与线性激活函数不同,非线性激活函数的引入可以增加神经网络的非线性,就不仅仅是简单的线性矩阵相乘。
2.2.1 Exponential
e x p o n e n t i a l ( x ) = e x exponential(x) = e^x exponential(x)=ex
import tensorflow as tf
a = tf.constant([-3.0,-1.0, 0.0,1.0,3.0], dtype = tf.float32)
b = tf.keras.activations.exponential(a)
print(b)
运行结果:
tf.Tensor([ 0.04978707 0.36787945 1. 2.7182817 20.085537 ], shape=(5,), dtype=float32)
2.2.2 Hard_sigmoid
H a r d ‾ s i g m o i d ( x ) = 0 x < − 2.5 0.2 x + 0.5 − 2.5 ≤ x ≤ 2.5 1 x > 2.5 Hard\\underline~~sigmoid(x)=\\begincases 0 & x<-2.5 \\\\ 0.2x+0.5 & -2.5≤x≤2.5 \\\\ 1& x>2.5 \\\\ \\endcases Hard sigmoid(x)=⎩⎪⎨⎪⎧00.2x+0.51x<−2.5−2.5≤x≤2.5x>2.5
import tensorflow as tf
a = tf.constant([-3.0,-1.0, 0.0,1.0,3.0], dtype = tf.float32)
b = tf.keras.activations.hard_sigmoid(a)
print(b)
运行结果:
tf.Tensor([0. 0.3 0.5 0.7 1. ], shape=(5,), dtype=float32)
2.2.3 Sigmoid
S i g m o i d ( x ) = 1 1 + e − x Sigmoid(x) = \\frac11+e^-x Sigmoid(x)=1+e−x1
import tensorflow as tf
print('sigmoid(x) = 1 / (1 + exp(-x))')
a = tf.constant([-20, -1.0, 0.0, 1.0, 20], dtype = tf.float32)
b = tf.keras.activations.sigmoid(a).numpy()
print(b)
运行结果:
sigmoid(x) = 1 / (1 + exp(-x))
[2.0611535e-09 2.6894143e-01 5.0000000e-01 7.3105860e-01 1.0000000e+00]
2.2.4 Swish
S w i s h ( x ) = x ⋅ S i g m o i d ( x ) = x 1 + e − x Swish(x) = x\\cdot Sigmoid(x) = \\fracx1+e^-x Swish(x)=x⋅Sigmoid(x)=1+e−xx
import tensorflow as tf
a = tf.constant([-20, -1.0, 0.0, 1.0, 20], dtype = tf.float32)
b = tf.keras.activations.swish(a)
print(b)
运行结果:
tf.Tensor([-4.1223068e-08 -2.6894143e-01 0.0000000e+00 7.3105860e-01 2.0000000e+01], shape=(5,), dtype=float32)
2.2.5 Tanh
Hyperbolic tangent activation function
T a n h ( x ) = e x − e − x e x + e − x Tanh(x) = \\frace^x-e^-xe^x+e^-x Tanh(x)=ex+e−xex−e−x
import tensorflow as tf
a = tf.constant([-3.0,-1.0, 0.0,1.0,3.0], dtype = tf.float32)
b = tf.keras.activations.tanh(a)
print(b)
运行结果:
tf.Tensor([-0.9950548 -0.7615942 0. 0.7615942 0.9950548], shape=(5,), dtype=float32)
2.2.6 Softmax
Softmax converts a vector of values to a probability distribution.
S o f t m a x ( x i ) = e x i ∑ j = 1 n e x j Softmax(x_i) = \\frace^x_i\\sum_j=1^n e^x_j Softmax(xi)=∑j=1nexjexi S o f t m a x ( x ⃗ ) = [ S o f t m a x ( x 1 ) , . . . , S o f t m a x ( x i ) , . . . , S o f t m a x ( x n ) ] T Softmax(\\vecx) =[Softmax(x_1),...,Softmax(x_i),...,Softmax(x_n)]^T Softmax(x)=[Softmax(x1),...,Softmax(xi),...,Softmax(xn)]T
import tensorflow as tf
inputs = tf.random.normal(shape=(3,4))
print(inputs)
outputs = tf.keras.activations.softmax(inputs)
print(outputs)
print(tf.reduce_sum(outputs[0,:]))
运行结果:
tf.Tensor([[-1.4463423 -1.2136649 0.37711483 -1.5163935 ]
[ 1.1458701 0.69421154 0.5825411 -0.6992794 ]
[ 0.90473056 0.9367949 0.5104403 0.40904504]], shape=(3, 4), dtype=float32)
tf.Tensor([[0.10652403 0.13443059 0.6597281 0.09931726]
[0.4230326 0.26929048 0.240837 0.06683987]
[0.3015777 0.31140423 0.20331109 0.183707 ]], shape=(3, 4), dtype=float32)
tf.Tensor(1.0, shape=(), dtype=float32)
import tensorflow as tf
x = tf.constant([-3.0, -1.0, 0.0以上是关于激活函数学习(2022.2.28)的主要内容,如果未能解决你的问题,请参考以下文章