10 / 24 · Concepto
im2col y multiplicación de matrices
Para H=W=4,C=1 y un núcleo 3×3 sin relleno, calcula los elementos originales de entrada, P,K y los elementos de parches expandidos.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Reformula la operación
im2col aplana cada ventana de entrada en un vector para la multiplicación de matrices. Colocamos un parche en cada fila. La matriz A tiene P×K elementos, con P=HoWo y K=CRS. Los pesos aplanados forman columnas de la matriz B, de dimensiones K×M. El producto AB tiene dimensiones P×M. Otras convenciones colocan los parches en columnas, así que establece los ejes en lugar de deducirlos del nombre.
Puedes materializar toda la matriz de parches o generar parches bajo demanda. Ambas opciones pueden producir los mismos números con distinto almacenamiento y ancho de banda. Disponer de un motor de multiplicación de matrices no exige escribir una matriz expandida completa en la memoria externa.
Matriz resuelta
Para [1,2,3;4,5,6;7,8,9] y ventanas 2×2, A tiene las filas [1,2,4,5], [2,3,5,6], [4,5,7,8] y [5,6,8,9]. El núcleo [1,2;3,4] da la columna de pesos [1,2,3,4]. Los cuatro productos escalares son 37,47,67,77. Así, 4×4 multiplicada por 4×1 da 4×1, que se reorganiza como una salida 2×2.
La entrada original contiene nueve elementos; la matriz expandida contiene dieciséis. El valor central cinco aparece cuatro veces, mientras que el valor de esquina uno aparece una. La reutilización espacial se convierte en duplicación en una representación materializada. Un vector de pesos se reutiliza para los cuatro parches. Calcula P×K y compáralo con C×H×W antes de asignar almacenamiento. Una región de salida mayor puede hacer considerable la duplicación.
Para varios canales, aplana el parche y los pesos en el mismo orden c,r,s. Un parche 1×1 de dos canales es [x0,x1]; invertir solo los canales de pesos cambia el resultado. Empieza con valores de canal asimétricos. La convolución agrupada forma vectores de grupo separados, en lugar de incluir indiscriminadamente todos los canales de entrada.
La concordancia con un modelo directo verifica valores aritméticos, no transferencias físicas de memoria ni operación simultánea de los PE. El siguiente capítulo genera ventanas equivalentes a partir de un flujo; después, la división en bloques evita almacenar un tensor expandido completo. Registra el tamaño de la matriz intermedia y la duplicación además de los valores de salida para mantener visibles los costes de la asignación.
Inténtalo tú
Para H=W=4,C=1 y un núcleo 3×3 sin relleno, calcula los elementos originales de entrada, P,K y los elementos de parches expandidos.
Leer la explicación
La entrada tiene dieciséis elementos. La salida es 2×2, así que P=4 y K=9. Una matriz completa de parches tiene 36 elementos. Las ventanas bajo demanda pueden evitar almacenar los 36.