Los Tensores como pilar de la Inteligencia Artificial

Realizamos un análisis exhaustivo del concepto de tensor, trascendiendo la mera definición para explorar su evolución desde la física teórica del siglo XIX hasta convertirse en la estructura de datos fundamental de la inteligencia artificial moderna. Se diferencia la definición matemática rigurosa de su aplicación práctica en la computación, se contextualiza su historia, se comparan sus propiedades con las de arrays y matrices, se explica su papel central en el machine learning, se describe su sinergia con hardware especializado como las TPUs y se sopesan las ventajas y desventajas de su uso. El reporte argumenta que la adopción de tensores no es una elección arbitraria, sino una consecuencia lógica de la necesidad de representar datos complejos y de optimizar las operaciones matemáticas subyacentes a los modelos de deep learning, marcando un cambio paradigmático en la computación.

1. De la abstracción matemática a la piedra angular de la IA.

1.1. Introducción

A menudo, la familiaridad con este concepto se limita a su uso pragmático en bibliotecas de programación, lo que oscurece su profunda base teórica. Se busca proporcionar una visión integral que abarque tanto su rigurosa definición matemática como su aplicación práctica en la computación. Para cualquier profesional o investigador en el campo de la IA, una comprensión profunda de los tensores es indispensable, ya que constituyen la unidad de datos central en la mayoría de los modelos y algoritmos de deep learning.

1.2. El doble significado del término «Tensor»

Una fuente común de confusión en la intersección de las matemáticas y las ciencias de la computación es la dualidad del término «tensor». En el campo de las matemáticas y la física teórica, un tensor es un objeto algebraico que describe una relación multilineal entre conjuntos de objetos asociados a un espacio vectorial. La propiedad definitoria de un tensor es su ley de transformación, que asegura que sus componentes cambian de una manera específica y predecible bajo una transformación de coordenadas, manteniendo al objeto subyacente invariante.  

Por otro lado, en el ámbito del machine learning (ML) y la programación, el término «tensor» se utiliza de manera informal para referirse a un array multidimensional. Si bien esta definición es pragmática y funcional para el programador, carece de la rigurosa exigencia de las leyes de transformación. Esta discrepancia conceptual ha generado una notable confusión entre los matemáticos y físicos, quienes a menudo consideran que la acepción informática es incorrecta o, en el mejor de los casos, incompleta. La distinción entre un tensor como un objeto matemático intrínseco y un tensor como una estructura de datos programática es crucial para una correcta comprensión de su función en la IA. Los frameworks modernos de ML han adoptado el término «tensor» no solo porque estas estructuras son arrays multidimensionales, sino porque están diseñadas para facilitar las operaciones matemáticas (como la multiplicación de matrices en grafos computacionales) que subyacen a la esencia de las transformaciones tensoriales, honrando así, aunque de forma simplificada, el espíritu del concepto matemático original.

2. Fundamentos teóricos del Tensor

2.1. El tensor como objeto algebraico: Una definición formal

El concepto de tensor se define formalmente a través de varias perspectivas que, si bien son distintas, describen el mismo objeto geométrico con diferentes niveles de abstracción.  

El primer enfoque, y quizás el más accesible, es concebir un tensor como una matriz multidimensional. Esta es una generalización de estructuras de datos más familiares: un escalar es un tensor de orden (o rango) cero, un vector es un tensor de orden uno (un array 1D), y una matriz es un tensor de orden dos (un array 2D). El orden de un tensor está dado por el número de índices necesarios para acceder a uno de sus componentes. Un tensor de orden «n» puede ser visualizado como una cuadrícula de n dimensiones, permitiendo la representación de datos complejos de alta dimensionalidad.  

Un segundo enfoque, común en la geometría diferencial y más riguroso, define un tensor como una aplicación multilineal. Un tensor de tipo (p,q) es una función que toma p vectores y q covectores (elementos del espacio dual) como entradas y produce un escalar. Esta definición subraya que un tensor no es solo una tabla de números, sino una operación que mapea múltiples entradas vectoriales y covectoriales a una única salida. Por ejemplo, un tensor de segundo orden (como el tensor de tensiones) puede ser visto como una aplicación que toma un vector de entrada y produce un vector de salida.  

El tercer enfoque, el más abstracto, define un tensor como un elemento de un producto tensorial. La literatura matemática a menudo reserva el término para un elemento del producto tensorial de un espacio vectorial V y su dual V∗. Este enfoque, si bien es el más formal, no es el más común en la mayoría de las aplicaciones prácticas y es más relevante en el álgebra abstracta.  

2.2. La clave de la identidad: Las leyes de transformación

La propiedad fundamental que distingue a un tensor de una simple colección de números es su ley de transformación. Cuando se cambia el sistema de coordenadas de un espacio vectorial (por ejemplo, de coordenadas cartesianas a polares), los componentes numéricos de un tensor se transforman de una manera específica y predecible. Esta transformación asegura que el objeto físico o geométrico que el tensor representa (un vector, una tensión, una curvatura) permanece invariante, independientemente del sistema de coordenadas utilizado para describirlo.  

Un ejemplo clásico es el tensor métrico gμν​. En un sistema de coordenadas curvilíneo, sus componentes gμν′​ se relacionan con los componentes gκλ​ en un sistema cartesiano mediante la ley de transformación:

\[ g’_{\mu\nu} = g_{\kappa\lambda} \frac{\partial x^{\kappa}}{\partial x’^{\mu}} \frac{\partial x^{\lambda}}{\partial x’^{\nu}} \]

Esta ecuación, que utiliza derivadas parciales de las funciones de coordenadas, muestra cómo los valores de los componentes se ajustan de manera precisa. De manera similar, un vector (un tensor de orden 1) se transforma según una regla específica, como se ilustra al pasar de un vector de posición en coordenadas cartesianas (x,y,z) a sus componentes en coordenadas polares (r,θ,ϕ). Aunque los valores numéricos de los componentes cambian drásticamente entre los dos sistemas, el vector en sí mismo, como objeto geométrico que apunta a un punto en el espacio, es el mismo. Esta inmutabilidad bajo transformaciones es lo que otorga a los tensores su poder para describir leyes físicas fundamentales y fenómenos geométricos de forma independiente del observador. Es esta propiedad la que valida su utilidad tanto en la física teórica como en las aplicaciones computacionales donde los datos pueden ser rotados, escalados o transformados.

3. Un recorrido histórico: El nacimiento y evolución del concepto

3.1. Orígenes y nomenclatura

El término «tensor» fue introducido por primera vez por el matemático y físico irlandés William Rowan Hamilton en 1846, durante su estudio de los cuaterniones. En este contexto, lo utilizó para referirse a la magnitud o el módulo de un cuaternión, un concepto que él mismo había acuñado junto con «vector» y «escalar».  

El significado moderno del término no surgió hasta más tarde, en el trabajo del físico Woldemar Voigt. En 1899, Voigt aplicó el término en su acepción actual, ligada a la teoría de la elasticidad y a las tensiones mecánicas. De hecho, la palabra «tensor» proviene del latín tensus, que significa «estirar» o «extender», un nombre que se popularizó precisamente porque la teoría de la elasticidad fue una de las primeras aplicaciones físicas en las que el concepto se utilizó de forma rigurosa.  

3.2. El cálculo tensorial y su consolidación

La base formal para lo que hoy se conoce como el cálculo tensorial fue desarrollada por el matemático italiano Gregorio Ricci-Curbastro en 1890. Inicialmente, Ricci-Curbastro se refirió a su trabajo como «geometría diferencial absoluta». Fue su discípulo, Tullio Levi-Civita, quien desempeñó un papel crucial en la consolidación y popularización de este campo. En 1900, ambos publicaron su libro de texto «El Cálculo Diferencial Absoluto«, que se convirtió en una obra estándar sobre el tema. La colaboración entre Ricci-Curbastro y Levi-Civita fue fundamental para transformar las ideas incipientes de la geometría diferencial en una herramienta matemática coherente y poderosa.

3.3. La consagración en la física: La relatividad general de Einstein

El concepto de tensor encontró su aplicación más trascendental y pragmática con la introducción de la teoría de la relatividad general de Albert Einstein en 1915. La relatividad general es, por su naturaleza, «netamente tensorial», ya que describe la curvatura del espacio-tiempo utilizando el tensor de curvatura de Riemann y el tensor métrico. Se dice que Einstein, quien aprendió a utilizar los tensores con gran dificultad directamente de Levi-Civita a través de correspondencia, reconoció en este marco matemático la única forma de expresar las leyes de la gravedad de manera independiente del sistema de coordenadas. La adopción del cálculo tensorial por parte de Einstein no solo validó su importancia, sino que también lo elevó a una posición de prominencia en la física teórica, donde sigue siendo una herramienta fundamental para campos como la cosmología y la física de partículas. Este hito histórico demuestra cómo una abstracción matemática, nacida de la necesidad de un lenguaje que pudiera describir fenómenos físicos sin depender de sistemas de referencia arbitrarios, puede convertirse en la base de una de las teorías más importantes de la ciencia moderna.  

4. Más allá de las matrices: Diferencias y similitudes con arrays y matrices

4.1. Tensores y matrices: Una relación de subconjunto

En la jerarquía de las estructuras de datos, una matriz y un tensor comparten una relación de subconjunto. Una matriz es, por definición, una estructura de dos dimensiones, una disposición rectangular de valores en filas y columnas. En el contexto de los tensores, una matriz es un caso particular: un tensor de segundo orden (o rango 2). Sin embargo, la afirmación recíproca, «todas las matrices son tensores», no es válida.  

La distinción fundamental reside en la propiedad de transformación. Un objeto solo puede ser clasificado como un tensor si sus componentes obedecen las leyes de transformación tensorial bajo un cambio de base de coordenadas. Una matriz, por sí misma, es simplemente una representación de datos, una cuadrícula de números que no está inherentemente ligada a estas reglas. Si una matriz representa una transformación lineal o una forma bilineal, entonces se comporta como un tensor bajo un cambio de base, pero si solo es una tabla de datos (como una hoja de cálculo), carece de la propiedad tensorial. Un ejemplo claro es el tensor de curvatura de Riemann en geometría diferencial o el tensor de tensiones en mecánica, que mantienen su significado físico intrínseco a pesar de las rotaciones o cambios de coordenadas. Esta diferencia subraya que la naturaleza de un tensor no es solo su forma, sino su comportamiento en el espacio.  

4.2. Tensores y arrays: Similitud superficial, distinción profunda

En el ámbito del machine learning, el término «tensor» a menudo se utiliza como sinónimo de «array multidimensional». Si bien un array puede ser la estructura de datos que almacena los componentes numéricos de un tensor, la analogía superficial oculta diferencias profundas. Un array en bibliotecas como NumPy es una estructura de datos de propósito general que carece de las funcionalidades especializadas que son inherentes a un tensor en un framework como TensorFlow o PyTorch.  

Los tensores de ML no son solo arrays; son estructuras de datos que vienen con un conjunto de funcionalidades críticas para el aprendizaje automático. Estas incluyen el soporte para la diferenciación automática, la aceleración de hardware (GPU/TPU) y la flexibilidad dimensional. Por ejemplo, mientras que un array tradicional podría requerir la creación de un nuevo objeto para cambiar su forma, los tensores de TensorFlow permiten remodelar los datos de manera dinámica y eficiente. Esta funcionalidad es crucial en el deep learning, donde la salida de una capa a menudo necesita ser reestructurada para servir como entrada para la siguiente. La adopción del término por parte de los frameworks de ML no fue un error conceptual, sino una elección pragmática para denotar una estructura de datos que, aunque es un array en esencia, ha sido optimizada y equipada con las herramientas necesarias para soportar los complejos cálculos y transformaciones que definen los modelos de IA.

5. El rol indispensable de los tensores en el machine learning y deep learning

5.1. Tensores como la estructura de datos unificada

En el núcleo de los modernos frameworks de deep learning como TensorFlow y PyTorch, el tensor es la unidad de datos básica y fundamental. Su importancia radica en su capacidad para actuar como una estructura unificada que representa y manipula de manera eficiente los diferentes tipos de datos que se encuentran en el campo. Por ejemplo, un escalar (un solo número) es un tensor de rango 0, un vector (como el embedding de una palabra) es un tensor de rango 1, una imagen en escala de grises es un tensor de rango 2 (altura x anchura), y una imagen a color (RGB) es un tensor de rango 3 (altura x anchura x canales de color). Cuando se trabaja con un lote de estas imágenes, se puede representar toda la colección como un tensor de rango 4 (tamaño del lote x altura x anchura x canales).  

Más allá de los datos de entrada, los tensores también almacenan los elementos clave de los modelos, incluyendo los pesos, los sesgos y las salidas intermedias de las capas neuronales. Esta representación unificada permite que las operaciones matemáticas subyacentes a las redes neuronales (como las multiplicaciones y las convoluciones) se realicen de manera consistente y altamente optimizada, lo que es esencial para el entrenamiento de modelos a gran escala.  

5.2. El flujo de datos: Tensores en grafos computacionales

El nombre de la popular biblioteca de Google, TensorFlow, es una descripción literal de su arquitectura: «flujo de tensores». Históricamente, en TensorFlow 1.x, la lógica de un programa se definía como un grafo computacional antes de su ejecución. En este grafo, los nodos representan operaciones (como MatMul, Add, ReLU) y los tensores actúan como las aristas que transportan los datos de un nodo a otro.  

Esta arquitectura de grafo ofrece una serie de ventajas significativas. En primer lugar, permite la optimización del cálculo al identificar las dependencias entre las operaciones. Esto significa que el framework puede evitar la ejecución de operaciones innecesarias o reorganizar el orden de las operaciones para maximizar la eficiencia. En segundo lugar, y quizás más importante, el grafo facilita la computación distribuida. Dado que las operaciones están separadas de la ejecución, el framework puede distribuir automáticamente la carga de trabajo entre diferentes dispositivos de hardware, incluyendo CPUs, GPUs y TPUs. La evolución hacia la ejecución eager en TensorFlow 2.0 ha simplificado el proceso de programación al permitir la ejecución inmediata de las operaciones, pero la idea subyacente de los tensores fluyendo a través de una red de operaciones sigue siendo el pilar central del paradigma de programación de la biblioteca.

5.3. El algoritmo de aprendizaje: Tensores y la retropropagación

La combinación de tensores y grafos computacionales es lo que habilita la capacidad de «aprendizaje» de los modelos de IA. El proceso de aprendizaje de una red neuronal se basa en dos pasos complementarios: la propagación hacia adelante y la retropropagación.  

Durante la propagación hacia adelante, los tensores de datos de entrada fluyen a través del grafo computacional, siendo transformados por los tensores de pesos y sesgos en cada capa, hasta que se produce una predicción de salida. Una vez que se calcula el error (o «pérdida») comparando la predicción con el valor real, el algoritmo de retropropagación entra en acción.

La retropropagación utiliza la diferenciación automática (DA), una técnica para calcular los gradientes de la función de pérdida con respecto a los pesos del modelo de manera eficiente. Los frameworks de ML como TensorFlow (a través de su API tf.GradientTape) graban las operaciones realizadas durante la propagación hacia adelante en una «cinta». Luego, esta cinta se recorre en sentido inverso para calcular los gradientes, que indican la dirección y magnitud en la que los pesos deben ser ajustados para minimizar el error. Los tensores son el medio por el cual los modelos no solo almacenan datos y parámetros, sino que también capturan la información de cómo deben ser actualizados. Esto crea un ciclo de aprendizaje continuo donde los tensores son la estructura de datos que permite que el modelo «entienda» y se adapte a su entorno de datos.

6. TPUs: Hardware optimizado para la computación tensorial

6.1. ¿Qué es una TPU? La respuesta de Google a la necesidad de aceleración

Una Unidad de Procesamiento de Tensores (TPU) es un circuito integrado de aplicación específica (ASIC) desarrollado por Google. A diferencia de las Unidades Centrales de Procesamiento (CPUs), que son procesadores de propósito general, y las Unidades de Procesamiento Gráfico (GPUs), que se especializan en el paralelismo masivo para gráficos y, más recientemente, para la computación general, las TPUs representan una hiper-especialización en las cargas de trabajo de machine learning y redes neuronales. Su propósito principal es acelerar las operaciones tensoriales, en particular la multiplicación de matrices y la convolución.  

6.2. Arquitectura especializada para operaciones tensoriales

La arquitectura de las TPUs está diseñada para maximizar el rendimiento en las operaciones matriciales. La clave de su diseño es el uso de arreglos sistólicos , un tipo de arquitectura de procesador en la que los datos fluyen a través de una matriz de unidades de procesamiento. Esto permite que una gran cantidad de operaciones de multiplicación y suma se realicen de manera simultánea, de forma análoga a una «orquesta» de cálculos que trabajan en perfecta sincronía. Esta capacidad de paralelismo a nivel de chip permite que las TPUs logren una velocidad y eficiencia significativamente mayores que las CPUs y GPUs tradicionales para las tareas dominadas por operaciones con tensores. El diseño de las TPUs está intrínsecamente ligado a la lógica de TensorFlow; de hecho, el hardware fue creado para optimizar el rendimiento de este framework, creando una sinergia única entre software y hardware.  

6.3. Impacto de las TPUs en el entrenamiento e inferencia

La adopción de las TPUs ha tenido un impacto transformador en el campo del deep learning. Su capacidad para acelerar las operaciones tensoriales ha permitido a los investigadores y a la industria entrenar modelos de IA a una escala sin precedentes, incluyendo los grandes modelos de lenguaje (LLMs). Al reducir drásticamente los tiempos de entrenamiento y la latencia de inferencia, las TPUs han hecho posible abordar problemas que antes eran computacionalmente prohibitivos. La disponibilidad de las TPUs en la nube de Google ha democratizado el acceso a este poder de cómputo, permitiendo que incluso equipos de investigación más pequeños aborden problemas de IA a gran escala. La existencia misma de las TPUs valida la importancia crítica de los tensores como la estructura de datos más relevante en la vanguardia de la IA. La creación de un hardware tan especializado para una clase específica de operaciones subraya que la computación moderna se dirige hacia la especialización, donde los tensores son el pilar fundamental que une la representación de datos, las operaciones matemáticas y la arquitectura del procesador.

7. Ventajas y desventajas del uso de tensores

7.1. Ventajas: Eficiencia, paralelismo y escalabilidad

El uso de tensores como la estructura de datos central en el machine learning ofrece una serie de ventajas operativas y de rendimiento que han sido fundamentales para el avance de la IA.

  • Representación Eficiente y Unificada: Los tensores son una forma natural de representar datos complejos y de alta dimensión, como imágenes, videos y texto, de una manera que las computadoras pueden procesar de forma nativa. Esta unificación de la estructura de datos simplifica el diseño de los modelos y el flujo de información a través de la red neuronal.  
  • Optimización del Cálculo: Las operaciones tensoriales, como la multiplicación de matrices y la convolución, están altamente optimizadas en los frameworks de deep learning. Esto permite la realización de cálculos a una velocidad y escala que serían inalcanzables con estructuras de datos más simples.  
  • Paralelismo de Hardware: El diseño inherente de los tensores facilita la paralelización de operaciones, lo que permite que las tareas de entrenamiento se distribuyan de manera eficiente en hardware especializado como GPUs y TPUs. Este paralelismo acelera dramáticamente el entrenamiento y la inferencia de modelos, pasando de horas o días a minutos o segundos en algunos casos.  
  • Flexibilidad y Escalabilidad: La naturaleza multidimensional de los tensores les permite adaptarse a diferentes tamaños y formas de datos. Su capacidad para ser manipulados en entornos distribuidos también permite que los modelos se entrenen con conjuntos de datos masivos.  

7.2. Desventajas y desafíos

A pesar de sus inmensas ventajas, el uso de tensores presenta ciertos desafíos, particularmente para aquellos que se inician en el campo del deep learning.

  • Complejidad Conceptual y Curva de Aprendizaje: El concepto de tensor, con su dualidad entre la definición matemática formal y su uso informal en la programación, puede ser confuso y representa una barrera de entrada para principiantes. Comprender cómo las operaciones afectan a las dimensiones de un tensor (su forma, rango y tipo de datos) requiere una curva de aprendizaje inicial.  
  • Inmutabilidad y Flexibilidad: En algunos frameworks, los tensores son inmutables , lo que significa que no se pueden modificar una vez creados. Si bien esta característica es esencial para ciertas optimizaciones de rendimiento y para el proceso de retropropagación, puede parecer menos flexible que otras estructuras de datos como las listas de Python.  
  • Desafíos de Debugging: La depuración de errores en modelos basados en tensores puede ser un desafío. Los errores sutiles en los cálculos o en la manipulación de las dimensiones de los tensores pueden ser difíciles de rastrear, especialmente cuando se trabaja con grafos computacionales y diferenciación automática.

8. Conclusión: El Legado de una idea matemática en la revolución de la IA

El tensor ha recorrido un notable viaje desde su concepción como un objeto matemático y físico abstracto hasta su posición actual como el pilar de la inteligencia artificial. Su invención, ligada a la necesidad de describir fenómenos físicos de manera independiente del sistema de coordenadas, le otorgó una propiedad definitoria —la ley de transformación— que lo separa conceptualmente de estructuras de datos más simples como los arrays y las matrices. Si bien la comunidad de machine learning adoptó el término de manera informal para referirse a un array multidimensional, esta elección fue un paso pragmático que reconoció la naturaleza fundamental de la representación de datos en la computación moderna.

La importancia del tensor en la IA radica en su capacidad para unificar la representación de datos complejos, las operaciones matemáticas subyacentes y la optimización del hardware especializado. Los frameworks de deep learning construyen sus arquitecturas en torno a los tensores, permitiendo que los datos fluyan a través de grafos computacionales que facilitan el cálculo eficiente y la retropropagación del error. La existencia de hardware como las Unidades de Procesamiento de Tensores (TPUs) de Google, diseñado específicamente para acelerar las operaciones tensoriales, es una prueba contundente de la relevancia y el impacto de este concepto. En última instancia, la evolución del tensor es un caso de estudio perfecto de cómo una abstracción matemática, nacida de la necesidad de un lenguaje universal en la física, puede encontrar una aplicación práctica transformadora, convirtiéndose en el motor de la revolución tecnológica en curso.

——————————————————————

Fuentes:

Tensorhttps://es.wikipedia.org/wiki/Tensor
Tensor (machine learning)https://en.wikipedia.org/wiki/Tensor_(machine_learning)
How to start with Tensors in Machine Learninghttps://medium.com/@mail2sudhir.online/understanding-tensors-in-machine-learning-a-beginners-guide-46b2432a14ae
Historia de Tensorhttps://es.scribd.com/document/282533021/Historia-del-Tensor
What is the history of the term «tensor»?https://math.stackexchange.com/questions/2030558/what-is-the-history-of-the-term-tensor
Tullio Levi-Civitahttps://es.wikipedia.org/wiki/Tullio_Levi-Civita
¿Qué es un tensor?https://foqum.io/blog/termino/tensor/#:~:text=Mientras%20que%20un%20vector%20es,datos%20m%C3%A1s%20complejos%20y%20estructurados
What are the Differences Between a Matrix and a Tensor?https://math.stackexchange.com/questions/412423/what-are-the-differences-between-a-matrix-and-a-tensor
Differences between a Matrix and a Tensorhttps://www.geeksforgeeks.org/maths/differences-between-a-matrix-and-a-tensor/
Tensor vs Matrix: an example with computer visionhttps://www.doczamora.com/tensor-vs-matrix-an-example-with-computer-vision
Los tensores son todo lo que necesitashttps://planetachatbot.com/tensores-son-todo-lo-que-necesitas/
Los tensores en deep learning: lo que necesitas saberhttps://blogs.imf-formacion.com/blog/tecnologia/tensores-deep-learning/
Tensorhttps://educasmart.com/inteligencia-artificial/tensor/
¿Qué es un tensor?https://foqum.io/blog/termino/tensor/
¿Cuál es la diferencia entre GPU, CPU y TPU?https://www.reddit.com/r/learnprogramming/comments/imaxdy/what_is_the_difference_between_gpu_cpu_and_tpu/?tl=es-419
Agiliza el desarrollo de la IA con las TPUs de Google Cloudhttps://cloud.google.com/tpu?hl=es
¿Qué son los pods de TPU v2 y cómo mejoran la potencia de procesamiento de las TPU?https://es.eitca.org/inteligencia-artificial/eitc-ai-gcml-google-nube-aprendizaje-autom%C3%A1tico/experiencia-en-aprendizaje-autom%C3%A1tico/sumergirse-en-el-tpu-v2-y-v3/revisi%C3%B3n-de-examen-sumergirse-en-el-tpu-v2-y-v3/%C2%BFQu%C3%A9-son-los-pods-tpu-v2-y-c%C3%B3mo-mejoran-la-potencia-de-procesamiento-del-tpus%3F/
Guía sobre las Unidades de Procesamiento Tensorial (TPUs)https://www.q2bstudio.com/nuestro-blog/12517/guia-tpus-que-son
Cinco ventajas (y una desventaja) que plantea el chip Tensor de Google: esto pinta muy bien, pero una sombra acecha su futurohttps://www.xataka.com/moviles/cinco-ventajas-desventaja-que-plantea-chip-tensor-google-esto-pinta-muy-bien-sombra-acecha-su-futuro
¿Qué es un Tensor? Una explicación genial para cualquiera que lo esté pasando mal.https://www.reddit.com/r/Physics/comments/24i2nu/whats_a_tensor_great_explanation_for_anyone_who/?tl=es-419
Las leyes de transformación de los tensoreshttps://espanol.libretexts.org/Bookshelves/Fisica/Relatividad/Relatividad_General_(Crowell)/04%3A_Tensores/4.04%3A_Las_leyes_de_transformaci%C3%B3n_de_los_tensores
Introducción a gradientes y diferenciación automática.https://www.tensorflow.org/guide/autodiff?hl=es-419
PyTorch vs Tensorflow vs Kerashttps://www.datacamp.com/es/tutorial/pytorch-vs-tensorflow-vs-keras
Tensores Pytorchhttps://medium.com/latinxinai/tensores-pytorch-ea4ce8ce96dc
Understanding the Difference Between Arrays and Tensors in TensorFlowhttps://medium.com/@mysterious_obscure/understanding-the-difference-between-arrays-and-tensors-in-tensorflow-175a9555b70
Why Tensors Are Essential in ML & DLhttps://medium.com/@payalparida_datascientist/why-tensors-are-essential-in-ml-dl-3fdd12365bca
How to start with Tensors in Machine Learninghttps://medium.com/@mail2sudhir.online/understanding-tensors-in-machine-learning-a-beginners-guide-46b2432a14ae
18. TRANSFORMACIÓN DE TENSOREShttps://www.youtube.com/watch?v=JIDxx5GYvGE