1. Inicialización de parámetros
Para una determinada neurona , hay dos tipos de parámetros que deben inicializarse: uno es el peso W y el otro es el sesgo b. El sesgo b se puede inicializar a 0. La inicialización del peso W es más importante, nos centramos en introducir métodos de inicialización comunes.
(1) Inicialización aleatoria
La inicialización aleatoria toma muestras de una distribución gaussiana (también llamada distribución normal) con una media de 0 y una desviación estándar de 1, e inicializa el parámetro W con algunos valores muy pequeños.
(2) Inicialización estándar
Los parámetros de peso se inicializan a valores uniformemente aleatorios del intervalo. Es decir, el peso de la neurona actual se genera en una distribución uniforme (-1/√d,1/√d), donde d es el número de entradas a cada neurona.
(3) Inicialización de Xavier (usado por defecto en tf.keras)
La idea básica de este método es que los valores de activación y las variaciones de gradiente de cada capa permanezcan consistentes durante el proceso de propagación, lo que también se denomina inicialización de Glorot. Hay dos métodos implementados en tf.keras:
① Inicialización normalizada de Xavier
Inicializador de distribución normal Glorot, también conocido como inicializador de distribución normal Xavier. Extrae muestras de una distribución normal centrada en 0 con desviación estándar stddev = sqrt(2 / (fan_in + fan_out)), donde fan_in es el número de neuronas de entrada y fan_out es el número de neuronas de salida.
# 导入工具包
import tensorflow as tf
# 进行实例化
initializer = tf.keras.initializers.glorot_normal()
# 采样得到权重值
values = initializer(shape=(9, 1))
# 打印结果
print(values)
②Inicialización de Xavier estandarizada
Inicializador de distribución uniforme Glorot, también conocido como inicializador de distribución uniforme Xavier. Extrae muestras de una distribución uniforme en [-limit, limit], donde limit es sqrt(6 / (fan_in + fan_out)), donde fan_in es el número de neuronas de entrada y fan_out es el número de neuronas de salida.
# 导入工具包
import tensorflow as tf
# 进行实例化
initializer = tf.keras.initializers.glorot_uniform()
# 采样得到权重值
values = initializer(shape=(9, 1))
# 打印结果
print(values)
(4) Él inicialización
La inicialización, también conocida como inicialización Kaiming, es de la mano del gran dios He Kaiming. Su idea básica es que durante la propagación hacia adelante, la varianza del valor de activación permanece sin cambios; durante la propagación hacia atrás, la varianza del gradiente del estado el valor permanece sin cambios. También hay dos tipos en tf.keras:
① Inicialización He normalizada
La inicialización de la distribución normal consiste en extraer muestras de la distribución normal truncada con 0 como centro y desviación estándar stddev = sqrt(2/fan_in), donde fan_in es el número de neuronas de entrada. El método de implementación en tf.keras es:
# 导入工具包
import tensorflow as tf
# 进行实例化
initializer = tf.keras.initializers.he_normal()
# 采样得到权重值
values = initializer(shape=(9, 1))
# 打印结果
print(values)
② Inicialización He estandarizada
El inicializador de escala de varianza uniforme. [-limit,limit]
Extrae muestras de una distribución uniforme donde limit
está el número de neuronas sqrt(6 / fan_in)
de entrada fan_in
. Implementado como:
# 导入工具包
import tensorflow as tf
# 进行实例化
initializer = tf.keras.initializers.he_uniform()
# 采样得到权重值
values = initializer(shape=(9, 1))
# 打印结果
print(values)