9 / 24 · Concepto
Referencia de convolución directa
Para entradas [2,3], pesos [4,−1] y sesgo uno, ¿qué resultado incorrecto aparece si el sesgo se añade una vez por iteración de canal de entrada?
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Prefiere una referencia que pueda examinarse
Un modelo de referencia prioriza un contrato visible sobre la velocidad. Itera por canal de salida, fila de salida y columna de salida; después reduce el canal de entrada y las filas y columnas del núcleo. Calcula cada coordenada de entrada y suministra cero fuera de los límites. Así se revela la primera salida incorrecta y el término exacto que diverge. No necesita imitar el orden optimizado de los bucles del hardware.
Inicializa el acumulador con b[m] una vez por salida. Añadirlo dentro de la reducción repetiría el sesgo. En el modelo entero, x y w son códigos centrados y el sesgo usa la escala del producto.
Ejemplo resuelto multicanal
Usa dos canales de entrada 1×1 que contienen dos y tres. El canal de salida cero tiene pesos [4,−1] y sesgo uno y da 1+8−3=6. El canal de salida uno tiene pesos [−2,5] y sesgo −1 y da −1−4+15=10. Un acumulador compartido debe iniciar la segunda salida de forma independiente, en lugar de conservar el primer resultado.
Para la entrada [1,2,3;4,5,6;7,8,9] y el núcleo [1,2;3,4], espera [37,47;67,77]. Los primeros productos registrados son 1,4,12,20. Los siguientes son 2,6,15,24. Examina una posición calculada a mano; los valores finales por sí solos pueden ocultar errores que se compensen.
Compara el modelo directo con un modelo de extracción de parches y productos escalares de estructura independiente. Compartir la misma rutina de direcciones en ambos puede compartir el mismo error. Combina estructuras independientes con datos calculados a mano. Mantén reproducibles las semillas aleatorias y conserva un tensor que falle. Compara tanto el acumulador sin convertir como el código final de salida para localizar los fallos numéricos.
Nuestro model.mjs acepta X[C][H][W] y W[M][C/G][R][S], con un lote implícito. Comprueba tensores rectangulares, compatibilidad de canales y grupos. No importa modelos de frameworks. Usa valores distintos, negativos y pesos asimétricos en lugar de datos de prueba de ceros. Compara las convenciones con ONNX Conv y documenta los límites de este modelo didáctico.
Inténtalo tú
Para entradas [2,3], pesos [4,−1] y sesgo uno, ¿qué resultado incorrecto aparece si el sesgo se añade una vez por iteración de canal de entrada?
Leer la explicación
El resultado correcto es 1+8−3=6. Repetir el sesgo dos veces da 8−3+2=7. Inicializa el sesgo fuera de la reducción de canales.