Python se da cuenta de la función de activación de la red neuronal

Función de activación

La función de activación debe ser una función no lineal, el problema con la función lineal es que por muy profunda que sea el número de capas, es equivalente a una red neuronal sin capas ocultas.
Por ejemplo: función lineal h (x) = cx como función de activación,
y (x) = h (h (h (x))) red neuronal de tres capas, simplificada ay (x) = c c c * x, incapaz de jugar mucho Las ventajas que aporta la capa de red.

1) Función de paso:

# coding: utf-8
import numpy as np
import matplotlib.pylab as plt

def step_function(x):
    return np.array(x > 0, dtype=np.int)

X = np.arange(-5.0, 5.0, 0.1)
Y = step_function(X)
plt.plot(X, Y)
plt.ylim(-0.1, 1.1)  # 指定图中绘制的y轴的范围
plt.show()

Los gráficos son los siguientes
Inserte la descripción de la imagen aquí

step_function 实现分解
>>> import numpy as np
>>> x = np.array([-1.0,1.0,2.0])
>>> x
array([-1.,  1.,  2.])
>>> y=x>0
>>> y
array([False,  True,  True])
>>> y=y.astype(np.int)
>>> y
array([0, 1, 1])

2) función sigmoidea:
sigmoidea es una curva suave y la salida cambia continuamente con la entrada. La función de paso está limitada por 0 y la salida cambia drásticamente. La fluidez de la función es de gran importancia para el aprendizaje de las redes neuronales.
Otra diferencia es que la función de paso solo puede devolver 0 o 1, mientras que la función sigmoidea puede devolver números reales como 0,731 ..., 0,880.
Sigmoid se puede comparar con una rueda hidráulica, que ajusta la cantidad de agua enviada de acuerdo con la cantidad de agua que fluye.

# coding: utf-8
import numpy as np
import matplotlib.pylab as plt

def sigmoid(x):
    return 1 / (1 + np.exp(-x))    

X = np.arange(-5.0, 5.0, 0.1)
Y = sigmoid(X)
plt.plot(X, Y)
plt.ylim(-0.1, 1.1)
plt.show()

El gráfico es el siguiente
Inserte la descripción de la imagen aquí
3) Función Relu
Inserte la descripción de la imagen aquí

# coding: utf-8
import numpy as np
import matplotlib.pylab as plt


def relu(x):
    return np.maximum(0, x)

x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)
plt.plot(x, y)
plt.ylim(-1.0, 5.5)
plt.show()

Los gráficos son los siguientes
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/WANGYONGZIXUE/article/details/110290300
Recomendado
Clasificación