Curso de Matemáticas para IA · Lección 18 de 180
Matrices para IA: leer filas, columnas y formas de redes neuronales
Aprende a leer dimensiones y elementos de matrices, relacionar filas y columnas con las funciones de una capa densa y detectar errores de forma o indexación en NumPy.
Una capa densa acepta tres características y produce dos valores de salida. Sus seis pesos podrían almacenarse en una sola lista larga, pero esa lista ocultaría el dato de depuración más útil: tres pesos pertenecen a cada regla de salida. Si colocamos los mismos números en dos filas y tres columnas, la estructura se vuelve visible:
La forma de la matriz, , es un contrato compacto. El primer número cuenta las reglas de salida; el segundo cuenta las características de entrada que usa cada regla. Antes de multiplicar nada, la cuadrícula ya indica qué debe significar cada eje y dónde pertenece cada peso.
Al final de esta lección podrás leer dimensiones de matrices, localizar un elemento mediante sus dos índices, interpretar filas y columnas en una matriz de pesos de una capa densa, reproducir esas inspecciones en NumPy y diagnosticar arrays cuyos valores parecen plausibles pero cuyos ejes tienen funciones equivocadas.
Resultado de aprendizaje: Leer dimensiones de matrices e interpretar filas y columnas.
La lección 14: Vectores como datos de IA estableció que una lista ordenada de coordenadas puede representar una entrada de IA. Una matriz añade un segundo eje para que varias listas relacionadas conserven su organización común. El sitio complementario oficial de Mathematics for Machine Learning define la notación de matrices, filas, columnas y elementos en la sección 2.2 del libro. El escenario de capa densa, los números, el diagrama, el código, las explicaciones y las evaluaciones que siguen son originales.
Un rectángulo contiene dos recuentos separados
Los dos índices tienen funciones distintas. El primero se desplaza verticalmente entre filas; el segundo se desplaza horizontalmente entre columnas. Para
, y . La matriz tiene elementos. Sumar las dimensiones, , da casualmente el mismo número aquí, pero es una coincidencia: una matriz tiene elementos, no .
Una matriz no tiene por qué ser cuadrada. Una matriz es tan legítima como una matriz . La notación tampoco decide qué representa un eje. Las filas pueden ser muestras de un conjunto de datos, reglas de salida de una capa o pasos temporales de una secuencia. El contrato de los datos proporciona ese significado.
Dos reglas de salida se convierten en una matriz 2 × 3
Supón que una pequeña capa de ranking lee tres características de entrada:
- : coincidencia temática;
- : actualidad; y
- : calidad de la fuente.
Almacena un coeficiente para cada característica en cada una de las dos reglas de salida:
La primera regla producirá un valor de relevancia; la segunda producirá un valor de prioridad de revisión. Esta lección todavía no calcula esos valores. La tarea es organizar los coeficientes sin perder qué entrada y qué salida conecta cada uno.
La construcción funciona porque las etiquetas de filas y columnas permanecen estables. Si el orden de las características cambiara a [source quality, topic match, recency] mientras los números permanecen en su sitio, la matriz conservaría la misma forma y los mismos valores, pero describiría reglas diferentes.
| Regla de salida (fila) | Coincidencia temática (columna 1) | Actualidad (columna 2) | Calidad de la fuente (columna 3) | Interpretación de la fila |
|---|---|---|---|---|
| fila 1 · relevancia | 0.8 (w₁₁) | −0.4 (w₁₂) | 0.2 (w₁₃) | Tres pesos asociados con la salida de relevancia. |
| fila 2 · prioridad de revisión | 0.1 (w₂₁) | 0.6 (w₂₂) | ★ −0.5 (w₂₃) | Tres pesos asociados con la salida de prioridad de revisión; w₂₃ es −0.5. |
El elemento delimitado en el visual se identifica de dos maneras independientes: la estrella y el contorno discontinuo lo marcan visualmente, mientras que la etiqueta y la tabla indican directamente . La fila 2 elige la regla de prioridad de revisión. La columna 3 elige la calidad de la fuente. Su intersección identifica una relación de la capa.
Una celda registra una relación fila–columna
Un elemento es más que un número suelto. Según la convención anterior, responde a una pregunta precisa:
¿Qué peso conecta la característica de entrada con la regla de salida ?
La respuesta se desprende de los índices, no solo del color o de la posición. Por ejemplo, pertenece a la regla de salida 2 y a la característica de entrada 1. Toda la segunda fila,
almacena los coeficientes de una salida. Toda la segunda columna,
recoge el coeficiente de actualidad de ambas salidas.
Esta interpretación de las filas pertenece a la convención de pesos de esta lección; no es una ley universal según la cual toda fila de una matriz significa “salida”. Una matriz de datos, por ejemplo, puede colocar una observación en cada fila. Nombra siempre el contrato de los ejes antes de razonar a partir de una forma.
NumPy permite inspeccionar ambos ejes
NumPy representa esta cuadrícula como un ndarray bidimensional. Su propiedad shape devuelve una tupla de longitudes de los ejes. La indexación de ndarray básica empieza en cero, de modo que la posición Python 0 corresponde al índice matemático .
import numpy as np
weights = np.array([
[0.8, -0.4, 0.2],
[0.1, 0.6, -0.5],
], dtype=float)
print("shape:", weights.shape)
print("number of axes:", weights.ndim)
print("number of entries:", weights.size)
print("row 2:", weights[1, :])
print("column 3:", weights[:, 2])
print("w_23:", weights[1, 2])
Salida verificada:
shape: (2, 3)
number of axes: 2
number of entries: 6
row 2: [ 0.1 0.6 -0.5]
column 3: [ 0.2 -0.5]
w_23: -0.5
La puntuación dentro del índice importa:
| Selección pretendida | Descripción matemática | Expresión NumPy | Resultado |
|---|---|---|---|
| Un elemento | fila 2, columna 3 | weights[1, 2] | -0.5 |
| Una fila | todas las columnas de la fila 2 | weights[1, :] | [0.1, 0.6, -0.5] |
| Una columna | todas las filas de la columna 3 | weights[:, 2] | [0.2, -0.5] |
Los dos puntos significan “tomar cada posición a lo largo de este eje”. Un entero fija un eje. Esto proporciona una secuencia de depuración útil: inspeccionar la forma completa, después una fila, después una columna y finalmente el elemento exacto cuyo significado está en duda.
Las comprobaciones de forma deben codificar el contrato del modelo, no limitarse a imprimirlo:
expected_shape = (2, 3) # two outputs, three input features
if weights.shape != expected_shape:
raise ValueError(
f"expected {expected_shape}, got {weights.shape}; "
"check the output and input axes"
)
La comprobación puede detectar un array transpuesto. No puede detectar un cambio silencioso del orden de las características, porque [topic match, recency, source quality] y [recency, source quality, topic match] tienen ambas longitud tres. Los nombres y la procedencia deben proteger el contrato semántico.
Una capa densa expone su contrato de entrada y salida
Cuando una entrada se escribe como vector columna , la capa puede resumirse así:
Los tamaños contiguos anticipan la siguiente operación:
Tres coordenadas de entrada encajan en las tres columnas de ; las dos filas producen dos coordenadas de salida. La lección 19 calculará ese producto matriz–vector como sumas ponderadas. Por ahora, las dimensiones por sí solas revelan si los objetos propuestos encajan con esta convención.
La documentación actual de torch.nn.Linear usa la misma disposición del peso almacenado: una capa con in_features=3 y out_features=2 tiene un tensor de pesos con forma (out_features, in_features), o (2, 3). PyTorch suele escribir las entradas por lotes con las características en el último eje y expresa su operación como . Esa notación por lotes orientada a filas explica la transposición visible; no cambia el contrato de dos filas por tres columnas del peso almacenado.
El sesgo no es una tercera columna de la matriz según esta definición. Es un vector independiente de dos coordenadas, un desplazamiento por salida. Por tanto, una capa con sesgo tiene en este ejemplo seis escalares de peso más dos escalares de sesgo.
Tres atajos de forma producen un modelo mental equivocado
También existe un límite de software que la notación habitual de aula suele dejar implícito. Esta lección define , por lo que toda matriz tiene al menos una fila y una columna. Sin embargo, NumPy puede construir un array con forma (0, 3) o (2, 0). Ese array tiene dos ejes y cero elementos, pero no puede servir como la cuadrícula de pesos de dos salidas y tres entradas anterior. Deben superar la comprobación tanto las reglas de forma del framework como el significado del modelo matemático.
Las filas están listas para la siguiente operación
Una matriz obtiene su concisión al mantener dos promesas a la vez. Su primer eje conserva el conjunto de reglas de salida; el segundo alinea cada regla con las mismas características de entrada ordenadas. Esa organización hace legible antes de empezar la aritmética y permite detectar una transposición incorrecta antes de que llegue a una ejecución de entrenamiento.
La siguiente lección segura respecto a los prerrequisitos colocará un vector de entrada junto a esta cuadrícula. Cada fila formará entonces una suma ponderada, convirtiendo la organización en un resultado de dos coordenadas. La página del curso Math for AI mantiene juntas las lecciones ordenadas y sus prerrequisitos.
Comprueba tu comprensión
Question 1
Sea B = [[3, −1, 4], [0, 5, 2]]. Indica sus dimensiones, el número total de elementos, b₁₃ y b₂₁.
Show the step-by-step solution
Cuenta primero las filas: tiene dos filas horizontales, así que . Cada fila tiene tres elementos, así que . Por tanto,
Para , elige la fila 1 y después la columna 3; allí está el valor . Para , elige la fila 2 y después la columna 1; allí está el valor . Así, y . El orden de los índices es primero la fila y después la columna.
Question 2
Dos reglas de salida usan las entradas x₁, x₂ y x₃: s₁ = 2x₁ + 0x₂ − x₃ y s₂ = 0.5x₁ + 3x₂ + 4x₃. Construye la matriz con una regla por fila y verifica dos elementos.
Show the step-by-step solution
Hay dos reglas de salida, por lo que la matriz necesita dos filas. Cada regla usa tres entradas ordenadas, así que necesita tres columnas. Conserva los coeficientes de cada regla en el orden :
El coeficiente de en la regla 1 está en la fila 1, columna 3, así que . El coeficiente de en la regla 2 está en la fila 2, columna 2, así que . Esas comprobaciones coinciden con las dos reglas originales.
Question 3
Para la matriz de pesos W de la lección, ¿qué expresiones de NumPy seleccionan el elemento matemático w₂₃, toda la fila 2 y toda la columna 3? Explica el desplazamiento entre índices que empiezan en 1 e índices que empiezan en 0.
Show the step-by-step solution
Los índices matemáticos de la lección empiezan en , mientras que las posiciones de NumPy empiezan en 0. Resta uno a cada índice matemático al escribir una selección directa en NumPy:
- se convierte en
weights[1, 2]y devuelve-0.5; - la fila 2 se convierte en
weights[1, :]y devuelve[0.1, 0.6, -0.5]; y - la columna 3 se convierte en
weights[:, 2]y devuelve[0.2, -0.5].
Los dos puntos dejan ese eje sin restricciones. El entero fija el otro eje en una posición basada en cero.
Question 4
Una capa densa tiene cinco características de entrada, cuatro unidades de salida y un sesgo por salida. ¿Cuál es la forma de la matriz de pesos y cuántos escalares entrenables contiene la capa?
Show the step-by-step solution
Con la convención (out_features, in_features), cuatro unidades de salida proporcionan las filas y cinco características de entrada proporcionan las columnas:
La matriz de pesos contiene escalares. El vector de sesgos tiene un elemento por cada una de las cuatro salidas, así que aporta más. El total es
escalares entrenables. El número de sesgos se suma por separado; no cambia la matriz de a .
Question 5
Un desarrollador pretende una capa de tres entradas y dos salidas, pero encuentra weights.shape == (3, 2). Diagnostica el error de los ejes y di cuál es un siguiente paso seguro.
Show the step-by-step solution
La disposición almacenada prevista es (out_features, in_features). Con dos salidas y tres entradas, la forma esperada es (2, 3), no (3, 2).
La forma observada ha colocado los tres grupos de características de entrada en el eje de filas y los dos grupos de salida en el eje de columnas. Si los valores se construyeron deliberadamente con una regla de salida por columna, weights.T produciría la forma (2, 3). Pero transponer a ciegas no es seguro: primero verifica las etiquetas de características y salidas, y transpón solo si esas etiquetas confirman que los ejes se invirtieron intencionadamente. La corrección de la forma debe conservar el significado semántico.
Question 6
Las matrices C = [[1, 2, 3, 4]] y D = [[1], [2], [3], [4]] contienen los mismos cuatro valores. ¿Por qué no son intercambiables?
Show the step-by-step solution
tiene una fila y cuatro columnas, así que . Puede almacenar una regla que usa cuatro entradas ordenadas. tiene cuatro filas y una columna, así que . Puede almacenar cuatro filas de un elemento o representar un vector columna.
Ambas tienen cuatro elementos, pero sus ejes tienen longitudes diferentes y pueden llevar significados distintos. La transposición las relaciona, , pero esa operación intercambia filas y columnas. Los mismos valores y el mismo número de elementos no implican las mismas formas o contratos matriciales.
Question 7
NumPy puede crear np.empty((0, 3)). ¿Cuál es su forma y tamaño, y por qué no puede sustituir a la matriz de pesos de dos salidas y tres entradas de esta lección?
Show the step-by-step solution
La tupla pasada a np.empty es la forma del array, por lo que el resultado tiene forma (0, 3): cero filas y tres columnas. Su número de elementos es el producto de las longitudes de los ejes,
La capa de esta lección necesita dos reglas de salida y, por tanto, dos filas. El array vacío no almacena ninguna regla de salida. Su eje de tres columnas coincide casualmente con el número de características de entrada, pero el eje de salida ausente viola el contrato del modelo. Un array de NumPy con una forma válida no es automáticamente una matriz útil para una capa concreta.
Question 8
En el mapa matricial, w₂₃ = −0.5. Indica la relación que nombra. ¿Demuestra ese único peso negativo que la salida final de prioridad de revisión será negativa?
Show the step-by-step solution
Lee los índices en orden. El primer índice, , selecciona la fila 2: la regla de salida de prioridad de revisión. El segundo índice, , selecciona la columna 3: la característica de entrada de calidad de la fuente. Por tanto, es el coeficiente que conecta la calidad de la fuente con la regla de prioridad de revisión.
Ese único coeficiente no determina el signo de la salida final. La salida también dependerá del valor real de , de las otras dos contribuciones de entrada ponderadas y de cualquier sesgo. El elemento de la matriz nombra una relación; el cálculo de suma ponderada de la siguiente lección combina todas las contribuciones.