Red neuronal 03 (inicialización de parámetros)

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)

Supongo que te gusta

Origin blog.csdn.net/peng_258/article/details/132829736
Recomendado
Clasificación