Pasar de una matriz multidimensional a un vector unidimensional es uno de los pasos más importantes cuando entrenas una red neuronal para clasificar imágenes médicas. Esa operación se llama flatten y funciona como el checklist que un doctor usa para revisar síntomas: convierte la información de una imagen en una lista ordenada que la red puede leer para decidir, por ejemplo, si un paciente tiene neumonía o no.
Qué hace la operación flatten en una red neuronal
La función flatten toma una entrada multidimensional, como una imagen o el resultado de una capa de convolución, y la transforma en un vector unidimensional sin modificar los valores originales [00:38].
Piensa en una matriz con números del 1 al 18, organizada en tres filas. Al aplicar .flatten() con NumPy, esa estructura se aplana en una sola línea de valores que conserva intacta la información, solo cambia su forma.
¿Qué es flatten en redes neuronales? Es una operación que convierte una matriz multidimensional en un vector unidimensional, manteniendo todos los valores originales pero reorganizándolos en una sola fila para que la red neuronal pueda procesarlos.
Por qué necesitas un vector y no una matriz
Las capas densas de una red neuronal esperan recibir un vector como entrada, no una matriz. Ese vector funciona como un checklist de características que la red usa para tomar decisiones de clasificación.
Sin este paso, la red no puede comparar patrones entre imágenes ni aprender qué combinaciones de píxeles son relevantes para detectar una enfermedad.
Cómo se aplica flatten a imágenes en blanco y negro y RGB
El proceso funciona igual sin importar el tipo de imagen, aunque cada una aporta una cantidad distinta de información.
En una imagen en blanco y negro, como un gradiente de grises, el flatten muestra las intensidades de color ordenadas, desde el píxel más oscuro hasta el más claro [01:22]. Lo mismo ocurre con los píxeles de una letra P: la imagen original se reagrupa en un vector que mantiene cada valor de intensidad.
Cuando trabajas con una imagen RGB, como el logo de Platzi, el flatten también funciona pero ahora aplana los tres canales de color correspondientes a rojo, verde y azul [01:45].
- Imagen en escala de grises: un solo canal de intensidad por píxel.
- Imagen RGB: tres canales por píxel, uno por cada color primario.
- Resultado de una capa de convolución: múltiples mapas de características que también se aplanan.
¿Flatten cambia los valores de la imagen? No. La operación solo reorganiza la estructura de los datos en una dimensión. Cada intensidad de píxel se conserva exactamente igual, lo único que cambia es la forma del arreglo.
El flujo completo desde la imagen hasta el vector
Hasta ahora el camino se ve así: tomas una imagen original, la conviertes en una matriz numérica y luego aplicas flatten para obtener un vector característico [02:05]. Ese vector es el insumo que tu red neuronal va a leer.
Pero aplicar este proceso a una sola imagen no alcanza. Lo valioso aparece cuando lo haces sobre un conjunto grande de imágenes, porque así la red puede identificar un patrón característico y aprender a decidir si una persona tiene neumonía o no [02:15].
Por qué flatten es clave para clasificar neumonía con redes neuronales
El objetivo final es que la red neuronal reciba muchos de estos vectores y descubra qué combinaciones de intensidades aparecen con frecuencia en radiografías con neumonía y cuáles en radiografías sanas.
Sin el paso de aplanar las imágenes, no tendrías ese checklist numérico que la red necesita para comparar, aprender y predecir. Por eso flatten conecta el procesamiento de imágenes con la toma de decisiones del modelo.
¿Ya probaste aplicar .flatten() a una de tus propias imágenes en NumPy? Contame en los comentarios qué forma tenía tu matriz antes y después de aplanarla.