Utilice pytorch para ver la matriz de características de la capa intermedia y las notas de los parámetros del núcleo de convolución

Introducir una forma de visualizar mapas de características y pesos del kernel.

Herramienta de visualización recomendada TensorBoard: puede ver el flujo de datos de todo el gráfico de cálculo, guardar información de pérdida, información de precisión, etc. durante el proceso de reentrenamiento.

Vídeo de aprendizaje: 

Utilice pytorch para ver la matriz de características de la capa intermedia y los parámetros del núcleo de convolución_bilibili_bilibili

Descarga de código:

aprendizaje profundo para procesamiento de imágenes/pytorch_classification/analyze_weights_featuremap en master · WZMIAOMIAO/aprendizaje profundo para procesamiento de imágenes · GitHub

1. Documentos requeridos

 Los archivos AlexNet.pth y resNet34.pth se obtuvieron mediante capacitación previa.

2. Pasos de operación

Matriz de características de la capa intermedia de AlexNet

1. Establezca un punto de interrupción en la salida del archivo analyse_feature_map.py y depure para ver la información impresa por el modelo de impresión.

2. Imprima dos estructuras de capas: la primera son características y la segunda es clasificador, que corresponde a la estructura de capas definida en el archivo alexnet_model.py, como se muestra en la siguiente figura:

 

3. Establezca un punto de interrupción en el módulo for name en self.features.named_children(): línea del archivo alexnet_model.py y ejecútelo paso a paso.

 Obtenga nombre = 0 y capa de convolución conv 2d, y así sucesivamente.

4. Deje que el programa se ejecute en el bucle for.

 Consulte out_put, que es una lista. Hay tres capas en total, correspondientes a las matrices de características de salida de la primera, segunda y tercera capa convolucional.

5. Deja que el programa termine de ejecutarse.

(1) La salida es el mapa de características de los primeros 12 canales de la matriz de características generada por la primera capa convolucional.

A través de la claridad y oscuridad del mapa de características, podemos comprender parte de la información que preocupa a la capa convolucional: cuanto mayor es el brillo, más interesante es la capa convolucional.

La imagen original es la siguiente:

 

(2) La matriz de características generada por la segunda capa convolucional: el grado de abstracción es cada vez mayor y algunos núcleos de convolución no desempeñan ningún papel

La matriz de características generada por la capa convolucional tres

 (3) El color después de eliminar cmap='gray' es azul verdoso

(4) Si desea ver más información, modifíquela durante la propagación hacia adelante de alexnet_model.py

Si desea ver la imagen de la capa completamente conectada, también debe pasar la imagen de entrada a través de la estructura de la capa de entidades y luego pasar a través de la capa completamente conectada para verla. 

Matriz de características de la capa intermedia de resnet34

1. Modifique el código y establezca un punto de interrupción para la depuración en la siguiente figura

Puedes ver la estructura de capas de resnet en la terminal. 

 2. Los resultados de la ejecución se muestran en la figura.

Obviamente resnet aprendió más información que alexnet.

Hay dos razones: resnet es realmente mejor que alexnet

                      Resnet utiliza el método de aprendizaje por migración y el conjunto de datos previo al entrenamiento se entrena utilizando el conjunto de datos de imagenet.

3. La salida de la matriz de características por capa 1 es obviamente mucho mejor que alexnet, y cada capa de características tiene salida, lo cual es útil

Parámetros del núcleo de convolución de AlexNet

1. Abra el archivo analyse_kernel_weight.py

Aquí puede cargar los pesos de entrenamiento directamente a través de la función torch.load sin crear una instancia del modelo, porque después de cargar a través de torch.load, es un tipo de diccionario y su clave representa el nombre de cada estructura de capa, y el valor correspondiente es el nombre de cada capa información de entrenamiento

2. Obtenga el diccionario de todos los parámetros entrenables en el modelo a través de la función model.state_dict y luego obtenga los nombres de todas las estructuras de capas con parámetros a través del método de claves.

 Ejecute un solo paso y observe las teclas de peso.

 Como se muestra en la figura siguiente,weights_keys es un conjunto ordenado de claves, que se guardan en el orden del proceso de propagación hacia adelante.

Reglas de nomenclatura:

                Solo las capas convolucionales como característica0, característica3, característica6, característica8 y característica10 tienen parámetros de entrenamiento.

                No hay ninguna función de activación para la función de activación y la reducción de resolución de agrupación máxima.

 3. Siguiente recorrido pesos_claves

 La función model.state_dict obtiene la información del diccionario de todos los parámetros entrenables en el modelo, pasa la clave correspondiente para obtener la información del parámetro y luego usa el método numpy para convertir la información de peso al formato numpy para facilitar el análisis.

Nota: El orden de los canales del núcleo de convolución es

                kernel_number El número de núcleos de convolución, correspondiente a la profundidad de la matriz de características de salida.

                kernel_channel profundidad del núcleo de convolución, correspondiente a la profundidad de la matriz de características de entrada

                kernel_height, kernel_width, la altura y el ancho del núcleo de convolución

4. Obtener información

    # k = weight_t[0, :, :, :]  # 通过切片的方式获得信息

    # calculate mean, std, min, max    对所有卷积核的信息进行计算
    weight_mean = weight_t.mean()      #均值
    weight_std = weight_t.std(ddof=1)  #标准差
    weight_min = weight_t.min()        #最小值
    weight_max = weight_t.max()        #最大值

Distribución de los valores del núcleo de convolución correspondientes a la capa de convolución uno 

La distribución de sesgos correspondientes a una capa convolucional.

 Todo lo que hay detrás es igual y no se mostrará.

Parámetros del núcleo de convolución de ResNet

1. Distribución de la primera capa convolucional.

2. La distribución de la capa bn, no es necesario utilizar el sesgo cuando se usa bn

\GRANDE \gamma  El peso es el parámetro  en la siguiente figura. 

 El sesgo corresponde a  \GRANDE \beta los parámetros de la figura anterior.

 

 la media corresponde a la media  \GRANDE \nos , que se obtiene estadísticamente

 La varianza  \GRANDE \sigma ^{2} también se obtiene estadísticamente.

La salida posterior tiene la misma estructura.

Supongo que te gusta

Origin blog.csdn.net/weixin_45897172/article/details/128352977
Recomendado
Clasificación