Operaciones de matriz | 12 operaciones matriciales para el aprendizaje profundo

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Introducción

Si comienza a aprender el aprendizaje profundo, lo primero a lo que estará expuesto son los conceptos de álgebra lineal que le brindan una mejor intuición sobre cómo funcionan realmente los algoritmos bajo el capó, lo que le permite tomar mejores decisiones. En Deep Learning, una red neuronal de avance es una red muy simple y muy útil. Bajo el capó, la red neuronal de alimentación hacia adelante es solo una función compuesta, que multiplica algunas matrices y vectores juntos.

1pi5c92acx6burmzet8uqyq-1029944

Fuente de imagen: Enlace

No es que los vectores y las matrices sean la única forma de realizar estas operaciones, pero se vuelven altamente eficientes si lo hace. Las estructuras de datos centrales detrás del aprendizaje profundo incluyen

  • Escalares
  • Vectores,
  • Matrices y
  • Tensores.

Las operaciones matriciales se utilizan en la descripción de muchos algoritmos de aprendizaje profundo.

1pur-9ctugamgjswow_ku-a-9057750

Fuente de imagen: Enlace

Entonces, si realmente quieres ser un profesional en el campo del Deep Learning, no puedes dejar de dominar algunos de estos conceptos. Entonces, en este artículo, discutiremos importantes operaciones matriciales de álgebra lineal que se utilizan en la descripción de métodos de aprendizaje profundo.

Tabla de contenido

Los temas que discutiremos en este artículo son los siguientes:

  • ¿Qué son las matrices?
  • ¿Cómo sumar y restar diferentes matrices?
  • ¿Cómo encontrar la forma y el tamaño de una matriz dada?
  • ¿Cómo convertir una matriz densa en una matriz dispersa?
  • ¿Cómo encontrar la transposición de una matriz?
  • ¿Cómo encontrar la media, la varianza y la desviación estándar de una matriz?
  • ¿Cómo encontrar el rastro de una matriz?
  • ¿Cómo extraer los elementos mínimos y máximos de una matriz?
  • ¿Cómo encontrar el determinante de una matriz?
  • ¿Cómo multiplicar las matrices dadas?
  • ¿Cómo aplicar la operación particular a cada elemento de una matriz?
  • ¿Cómo encontrar la inversa de una matriz?
  • ¿Cómo remodelar la matriz a un tamaño diferente?

¿Qué son las matrices?

Las matrices son matrices rectangulares que constan de números y se pueden ver como 2Dakota del Norte-orden de tensores. Si myn son números enteros positivos, es decir, m, n ∈ ℕ entonces la matriz m × n contiene m * n números de elementos, con m número de filas yn número de columnas.

La representación pictórica de una matriz m × n se muestra a continuación:

1x0q53aiuug4i6u7bmjjuzg-1440737

Fuente de imagen: Enlace

A veces, en lugar de describir los componentes completos de la matriz, usamos la siguiente abreviatura de una matriz:

1rgmyzl1tmf4so67kxyuf1g-1913955

Por ejemplo-

En este ejemplo, con la ayuda de la biblioteca numpy, crearemos una matriz. Y también verifique la dimensión de la matriz formada.

import numpy as np
matrix = np.array([[45,34],[67,58]])
# Create a matrix
print("The original matrix is given by n", matrix)
# Check the dimension of the matrix
print("The dimension of the given matrix is", matrix.ndim)

Producción:

The original matrix is given by 
 [[45 34]
 [67 58]]
The dimension of the given matrix is 2

Suma y resta de matrices

matrix-addition-8367395

Fuente de imagen: Enlace

En esta sección, realizaremos sumas y restas de matrices usando el los métodos suman y restan. Estos métodos toman dos argumentos y devuelven la suma y la diferencia de esas matrices respectivamente. Si la forma de las matrices no es la misma arroja un error que dice, la suma o resta no es posible.

matrix_1 = np.array([[45,34],[67,58]])
matrix_2 = np.array([[35,24],[57,48]])
# Add the two matrices
print("The result after adding matrix 1 and matrix 2 is given by n" , np.add(matrix_1, matrix_2))
# Subtract one matrix from the other matrices
print("The result after subtracting matrix 1 from matrix 2 is given by n" , np.subtract(matrix_1, matrix_2))
print("The result after subtracting matrix 2 from matrix 1 is given by n" , np.subtract(matrix_2, matrix_1))

Producción:

The result after adding matrix 1 and matrix 2 is given by 
 [[ 80  58]
 [124 106]]
The result after subtracting matrix 1 from matrix 2 is given by 
 [[10 10]
 [10 10]]
The result after subtracting matrix 2 from matrix 1 is given by 
 [[-10 -10]
 [-10 -10]]

Forma y tamaño de una matriz

En esta sección, encontraremos la forma, es decir, el número de filas y columnas en la matriz dada y el tamaño, es decir, el número de elementos en la matriz de una matriz dada.

matrix = np.array([[45,34,75],[67,58,89]])
# Finding number of rows and columns in the matrix
print("The number of rows and columns in the given matrix are " + str(matrix.shape[0]) + " and " + str(matrix.shape[1]) + " respectively")
# Number of elements in the matrix
print("The size of the given matrix is" , matrix.size)

Producción:

The number of rows and columns in the given matrix are 2 and 3 respectively
The size of the given matrix is 6

Conversión de una matriz densa dada en una matriz dispersa

Primero entendamos qué significa exactamente por matriz dispersa y densa.

Una matriz dispersa es una matriz que consta principalmente de valores cero. Y las matrices dispersas son diferentes de las matrices con valores en su mayoría distintos de cero, que se conocen como matrices densas.

sparse_matrix-3700565

Fuente de imagen: Enlace

from scipy import sparse
# Create a Dense Matrix
dense_matrix = np.array([[0,0],[0,17],[78,0]])
# Convert Dense matrix to Sparse matrix
sparse_matrix = sparse.csr_matrix(dense_matrix)
print("The sparse matrix corresponding to a given dense matrix is given by n" , sparse_matrix)

Producción:

The sparse matrix corresponding to a given dense matrix is given by 
   (1, 1)	17
  (2, 0)	78

Transposición de matriz

En Matrix Transpose, podemos convertir un vector de fila en un vector de columna y viceversa, es decir, la fila se convierte en columnas y las columnas en filas.

Si tenemos la matriz A = [aij]mxn, entonces la transpuesta de esta matriz es AT = [aji]n × m

1vubyxk3gxhnuqvstmcs2gg-1953878Fuente de imagen: Enlace

import numpy as np
matrix = np.array([[45,34],[67,58]])
print("The original matrix is given by n" , matrix)
print("The transpose matrix of the given matrix is n" , matrix.T)

Producción:

The original matrix is given by 
 [[45 34]
 [67 58]]
The transpose matrix of the given matrix is 
 [[45 67]
 [34 58]]

Media, varianza y desviación estándar de una matriz

En esta sección, intentaremos encontrar algunas cosas estadísticas relacionadas con una matriz. Aquí calculamos la media, la varianza y la desviación estándar de la matriz usando las funciones numpy.

import numpy as np
matrix = np.array([[45,34],[67,58], [23,89]])
# Finding the mean of a matrix elements
print("The mean of the elements of a matrix is equal to", np.mean(matrix))
# Finding the Variance of a matrix elements
print("The variance of the elements of a matrix is equal to", np.var(matrix))
# Finding the Standard Deviation of a matrix elements
print("The standard deviation of the elements of a matrix is equal to", np.std(matrix))
print("The standard deviation of the elements of a matrix is equal to", np.sqrt(np.var(matrix)))

Producción:

The mean of the elements of a matrix is equal to 52.666666666666664
The variance of the elements of a matrix is equal to 473.5555555555555
The standard deviation of the elements of a matrix is equal to 21.761331658599286
The standard deviation of the elements of a matrix is equal to 21.761331658599286

Rastro de una matriz

matrix-trace-example-8898186

Fuente de imagen: Enlace

En esta sección, intentará encontrar el rastro de una matriz, es decir, la suma de todos los elementos diagonales presentes en una matriz dada.

import numpy as np
matrix = np.array([[1,2,3],[4,5,6], [7,8,9]])
# Get the diagonal elements of a matrix
print("The diagonal elements of a given matrix are n", matrix.diagonal())
# Finding the trace of the matrix
print("The trace of a given matrix is equal to", matrix.diagonal().sum())

Producción:

The diagonal elements of a given matrix are 
 [1 5 9]
The trace of a given matrix is equal to 15

Encontrar elementos mínimos y máximos de una matriz

En esta sección, intentaremos encontrar los elementos mínimos y máximos de una matriz, es decir, el elemento con el valor más alto y más bajo entre todos los elementos.

import numpy as np
matrix = np.array([[1,2,3],[4,5,6], [7,8,9]])
# Find the minimum element of the matrix
print("The minimum element in a given matrix is", np.min(matrix))
# Find the maximum element of the matrix
print("The maximum element in a given matrix is", np.max(matrix))

Producción:

The minimum element in a given matrix is 1
The maximum element in a given matrix is 9

Determinante de una matriz

b2f18ad26042cabfa7a4aa15d62e752c-6279776

Fuente de imagen: Enlace

En esta sección, intentaremos encontrar el determinante de una matriz. Aquí, para calcular el determinante, usamos el módulo de álgebra lineal presente en el paquete Numpy.

import numpy as np
matrix = np.array([[1,2,4],[3,4,6], [7,8,5]])
# Find the determinant of the matrix
print("The determinant of the given matrix is equal to", np.linalg.det(matrix))

Producción:

The determinant of the given matrix is equal to 9.999999999999993

Multiplicación de matrices

Una matriz de forma (mxn) y una matriz B de forma (nxp) multiplicada da C de forma (mxp). Recuerde que al multiplicar las matrices es que el número de columnas en la primera matriz es el mismo que el número de filas en la segunda matriz para realizar la multiplicación sin errores.

196qrphcvxbvm01i1luks8g-4855839

Fuente de imagen: Enlace

En esta sección, intentaremos encontrar la multiplicación de dos matrices.

import numpy as np
matrix_1 = np.array([[45,34],[67,58]])
matrix_2 = np.array([[35,24],[57,48]])
print("The matrix multiplication of given two matrices is given by n", np.matmul(matrix_1, matrix_2))

Producción:

The matrix multiplication of given two matrices is given by 
 [[3513 2712]
 [5651 4392]]

Operaciones inteligentes con elementos usando una función en línea (Lambda)

En este ejemplo, intentaremos agregar un cierto valor a cada uno de los elementos de una matriz.

import numpy as np
matrix = np.array([[1,2,4],[3,4,6], [7,8,5]])
addition = lambda i:i+5
add_5_vec = np.vectorize(addition)
print("The matrix after adding 5 to all its elements is n", add_5_vec(matrix))

Producción:

The matrix after adding 5 to all its elements is 
 [[ 6  7  9]
 [ 8  9 11]
 [12 13 10]]

Inversa de una matriz

En esta sección, intentaremos encontrar la inversa de una matriz.

import numpy as np
matrix = np.array([[1,2,4],[3,4,6], [7,8,5]])
# Finding the inverse of a matrix
print("The inverse matrix of a given matrix is n", np.linalg.inv(matrix))

Producción:

The inverse matrix of a given matrix is 
 [[-2.8  2.2 -0.4]
 [ 2.7 -2.3  0.6]
 [-0.4  0.6 -0.2]]

Remodelar una Matriz dada

En esta sección, intentaremos remodelar una matriz dada, es decir, cambiar la forma de la matriz dada. Pero aquí tenemos que notar que el tamaño permanece constante después de remodelar la matriz, es decir, el número de elementos permanece igual.

import numpy as np
matrix = np.array([[1,2,4],[3,4,6],[7,8,5],[9,2,1]])
print("The reshaped matrix is given by n", matrix.reshape(6,2))

Producción:

The reshaped matrix is given by 
 [[1 2]
 [4 3]
 [4 6]
 [7 8]
 [5 9]
 [2 1]]

Otras publicaciones de blog mías

También puede consultar mis publicaciones de blog anteriores.

Publicaciones anteriores del blog de ciencia de datos.

LinkedIn

Aquí está mi perfil de Linkedin en caso de que quieras conectarte conmigo. Estaré feliz de estar conectado contigo.

Correo electrónico

Para cualquier consulta, puede enviarme un correo electrónico al Gmail.

Notas finales

¡Gracias por leer!

Espero que les haya gustado el artículo. Si te gusta, compártelo con tus amigos también. ¿Algo no mencionado o quieres compartir tus pensamientos? No dude en comentar a continuación y me pondré en contacto con usted. 😉

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.