cuando se trabaja con redes neuronales profundas (DNNS), a menudo es útil inspeccionar las activaciones de las capas individuales. Esto puede ayudarlo a comprender el comportamiento del modelo e identificar posibles problemas. Keras, una biblioteca DNN popular para Python, proporciona una forma simple de lograr esto.
keras se construyen como una secuencia de capas, cada uno realizando una operación específica en la entrada. Para recuperar la salida de una capa en particular, puede usar la siguiente sintaxis:
model.layers[index].output
donde el índice es el índice de la capa que desea extraer la salida. Por ejemplo, para obtener la salida de la segunda capa convolucional en el fragmento de código proporcionado:
conv_output = model.layers[2].output
para extraer la salida de todas las capas en el modelo, puede usar una lista de salida de la lista:
outputs = [layer.output for layer in model.layers]
para evaluar realmente las salidas de las capas, keras proporciona un conjunto de funciones llamadas k.function. Estas funciones toman como entrada una lista de tensores y devuelven una lista de salidas.
para crear una función de evaluación para cada salida de la capa, puede hacer lo siguiente:
from keras import backend as K functors = [K.function([inp, K.learning_phase()], [out]) for out in outputs]
donde INP es el tensor de entrada, k.learning_phase () es un indicador para indicar si el modelo está en modo de entrenamiento o inferencia, y la salida es la salida de la capa
ahora, puede evaluar las salidas de la capa pasando los datos de entrada a la función de evaluación correspondiente:
test = np.random.random(input_shape)[np.newaxis,...] layer_outs = [func([test, 1.]) for func in functors] print layer_outs
Recuerde establecer k.learning_phase () en 1 Si alguna de las capas en su modelo incluye la normalización de deserción o lotes para simular el modo de entrenamiento.
un enfoque más eficiente para evaluar las salidas de las capas es utilizar una función única que devuelve la lista de salidas para todas las salidas para todas las salidas para todas las salidas para todas capas:
from keras import backend as K functor = K.function([inp, K.learning_phase()], outputs)
esto reduce la transferencia de datos y la sobrecarga de cálculo asociada con las evaluaciones de funciones individuales.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3