es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comportamiento extraño e inconsistente de inicialización en el modelo secuencial de tf Keras (Python)

He estado trabajando en hacer una red neuronal simple informada por física utilizando un modelo secuencial con capas densas en keras. Entre otros problemas, he notado que al graficar algunos valores después de la inicialización, obtengo valores iniciales extraños. Creo que esto puede ser causado por un problema subyacente que afecta el resto de mi código. Aquí hay algunos fragmentos de código relevantes.

Mi MLP toma una coordenada de posición y tiempo, y devuelve un valor escalar:

MLP = keras.Sequential([
layers.InputLayer(input_shape = (1, 2)),
layers.Dense(64, kernel_initializer=initializers.RandomNormal(stddev=1), bias_initializer=initializers.RandomNormal(stddev=1), activation = ‘relu’),
layers.Dense(64, kernel_initializer=initializers.RandomNormal(stddev=1), bias_initializer=initializers.RandomNormal(stddev=1), activation = ‘relu’),
layers.Dense(1),
])

Y he estado graficando las salidas inicializadas en el tiempo t = 0 usando Matplotlib como:

x_vals_plt = np.linspace(0, 1, num = 1000)
t_vals_plt = np.zeros(1000)

batch_mat = tf.reshape([x_vals_plt, t_vals_plt], [-1, 1, 2])
y_vals_plt = MLP(batch_mat)
y_vals_plt = np.reshape(y_vals_plt, [1000])

plt.plot(x_vals_plt, y_vals_plt)
plt.show()

Como ejemplo del comportamiento que estoy notando, tengo algo como el resultado de Matplotlib sin el inicializador de keras, obtuve un valor inicial muy abrupto con líneas planas en todas partes excepto un valor más grande hacia el centro.

¿Alguna idea sobre lo que podría estar causando esto, o si es solo una repercusión de las activaciones relu?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es difícil determinar el problema exacto sin más información, pero es posible que los valores de inicio extraños sean resultado de los inicializadores elegidos para las capas densas. El inicializador aleatorio normal con una desviación estándar de 1 puede generar valores grandes, lo que podría estar causando el comportamiento inesperado.

    Además, el uso de la función de activación ReLU también podría ser un factor que contribuye al problema. ReLU puede producir salidas truncadas a 0, lo que resultaría en líneas planas en la salida.

    Para diagnosticar el problema, podría ser útil probar inicializadores alternativos, como el inicializador Glorot uniforme, y probar diferentes funciones de activación, como las funciones de sigmoidal o tangente hiperbólica. También podría ser útil verificar los valores de peso y sesgo de las capas densas para ver si se alinean con lo esperado.

    En general, puede requerir cierta experimentación y depuración para determinar la causa raíz del problema.

Comments are closed.