Red de conocimientos turísticos - Conocimientos sobre calendario chino - Práctica de convolución de la operación im2col

Práctica de convolución de la operación im2col

La operación im2col se utiliza para optimizar la operación de convolución. En esencia, convierte los campos compatibles con el kernel de convolución en filas (columnas) que se almacenarán, optimizando así la velocidad de operación y reduciendo el tiempo de acceso a la memoria.

Este tipo de cálculo (operación matricial im2col + gemm) se utiliza para optimizar los cálculos de convolución en marcos como caffe:

El diagrama esquemático es el siguiente:

Avanzar Convertir la ventana deslizante en una matriz

En los datos de entrada, n=3, c=3 (procesar tres datos de imagen de tres canales simultáneamente)

Núcleo de convolución: n= 3, c=3

Salida: n=3,c=1

Si se trata de datos de cuatro dimensiones, la forma de (10,3,28,28) representa 10 anchos y alturas. 28 datos de imagen de tres canales se combinan en un tensor

Para la imagen de entrada, primero convierta la imagen en una matriz enorme:

Para el núcleo de convolución, expanda el núcleo de convolución:

Después de expandir la imagen de entrada, realice la multiplicación de matrices con las columnas del núcleo de convolución (que se puede acelerar enormemente) y luego realice la operación col2im para restaurar el resultado:

Idea: Convertir el campo receptivo del núcleo de convolución Poner en una fila:

Supongamos que tenemos una matriz de 4*4 que contiene 1-16 campos receptivos,

Si tenemos un 4 *4 matriz que contiene 1-16 campos receptivos, relleno = 1,

,

Entonces el núcleo de convolución es una convolución 3*3, y luego se deslizará a través de los campos receptivos cada time:

,

p>

Los concatenamos para obtener la matriz:

Un campo receptivo por fila

;

html>