PyTorch
PyTorch es una biblioteca de código abierto especializada en aprendizaje profundo (deep learning) y redes neuronales. Fue lanzada en 2016 por Facebook AI Research (FAIR) y ha crecido rápidamente en popularidad tanto en la investigación académica como en el desarrollo de aplicaciones industriales. Lo que diferencia a PyTorch de otras herramientas es su capacidad para construir modelos de manera intuitiva y flexible, lo que facilita la experimentación y la depuración de los mismos.
En sus inicios, las principales bibliotecas de aprendizaje profundo eran TensorFlow, de Google, y Theano. Sin embargo, estas soluciones presentaban dificultades cuando se trataba de construir modelos de manera más dinámica y flexible, algo que los investigadores necesitaban. PyTorch fue diseñado para cubrir esa necesidad, enfocándose en la simplicidad y en un estilo de programación más familiar para los desarrolladores de Python. Con el tiempo, PyTorch se convirtió en la opción preferida de muchos investigadores debido a su facilidad de uso y su capacidad para ejecutar código en GPU de manera eficiente, lo que acelera los entrenamientos de modelos grandes y complejos.
PyTorch se utiliza principalmente para el desarrollo y la investigación en aprendizaje profundo. Ofrece herramientas poderosas para diseñar redes neuronales, optimizar modelos y realizar tareas avanzadas de procesamiento de datos. Algunas de sus aplicaciones incluyen:
- Reconocimiento de imágenes
- Procesamiento de lenguaje natural (NLP)
- Visión por computadora
- Modelado secuencial
- Generación de modelos generativos adversarios (GANs)

Instalación de PyTorch
Instalar PyTorch es sencillo y soporta múltiples plataformas. Los siguientes son los comandos básicos para instalar PyTorch en entornos diferentes. Se recomienda usar pip o conda, según el gestor de paquetes de tu elección.
Aquí instalas PyTorch junto con
Asegúrate de elegir la versión adecuada de acuerdo con la compatibilidad de tu GPU y el tipo de soporte CUDA que necesites.
Los Tensores
Los tensores son la base de PyTorch y representan arreglos multidimensionales, similares a los arrays de NumPy, pero con la ventaja de poder ser ejecutados en GPU, lo que mejora el rendimiento en cálculos intensivos.
Creación de un tensor básico:
Los tensores pueden ser manipulados fácilmente y transformados, y al igual que los arrays de NumPy, soportan operaciones matemáticas complejas, pero con la ventaja adicional de que PyTorch permite mover estos tensores entre CPU y GPU sin esfuerzo.

Reglas de Broadcasting
Las reglas de broadcasting en PyTorch (y en otros frameworks de cálculo numérico como NumPy) son un conjunto de reglas que permiten realizar operaciones entre tensores de diferentes dimensiones de manera eficiente. En lugar de requerir que los tensores tengan exactamente las mismas dimensiones, el broadcasting permite que un tensor más pequeño "se expanda" para que coincida con las dimensiones del tensor más grande durante las operaciones aritméticas.
El broadcasting es una poderosa característica que permite realizar operaciones de manera eficiente sin necesidad de crear copias adicionales de los datos. Esto no solo ahorra memoria, sino que también mejora el rendimiento al realizar cálculos en tensores de diferentes dimensiones.
Compatibilidad de Dimensiones: - ∅ Si los tensores tienen el mismo número de dimensiones, las dimensiones son compatibles si son iguales o si uno de los dos es igual a 1.
- ∅ Si los tensores tienen un número diferente de dimensiones, las dimensiones del tensor más pequeño se expanden a la izquierda hasta que ambos tensores tengan el mismo número de dimensiones.
Expansión de Dimensiones: - ∅ Cuando una dimensión tiene un tamaño de 1 en uno de los tensores, se "expande" para igualar el tamaño de la otra dimensión en el tensor de mayor tamaño. Esto se realiza conceptual y computacionalmente sin la necesidad de crear copias adicionales de los datos en memoria.
Operaciones: - ∅ Las operaciones element-wise (como suma, resta, multiplicación, etc.) pueden realizarse entre tensores que se han expandido, como si tuvieran el mismo tamaño.

PyTorch vs TensorFlow
PyTorch y TensorFlow son dos de los frameworks más populares en el campo del aprendizaje profundo. Aunque ambos tienen características similares, sus enfoques y funcionalidades presentan algunas diferencias clave:
Gráficos computacionales: - ◉
PyTorch: Gráfico computacional dinámico. Los gráficos se construyen y ejecutan sobre la marcha, lo que facilita la depuración y permite mayor flexibilidad al modificar modelos sobre la marcha. - ◉
TensorFlow: Originalmente, utilizaba gráficos computacionales estáticos, pero desde la versión 2.0, TensorFlow ha adoptado un enfoque más dinámico a través detf.function . Facilidad de uso: - ◉
PyTorch: Tiene una curva de aprendizaje suave para programadores acostumbrados a Python, ya que su sintaxis es muy cercana a este lenguaje. Los modelos y el flujo de datos son intuitivos. - ◉
TensorFlow: Ofrece una API de alto nivel (Keras) que facilita el uso, pero puede ser más complicado cuando se trata de personalizar o depurar modelos más avanzados. Popularidad en la investigación: - ◉
PyTorch: Ha ganado mucho terreno en la comunidad de investigación debido a su flexibilidad y facilidad para probar nuevas ideas. - ◉
TensorFlow: Tiene un amplio soporte industrial y es más utilizado en entornos de producción debido a su ecosistema maduro y herramientas avanzadas como TensorFlow Lite y TensorFlow Extended (TFX).
Funcionalidades
- ◘
TorchVision: Una biblioteca auxiliar que ofrece utilidades para la visión por computadora, incluyendo transformaciones de imágenes y modelos preentrenados. - ◘
TorchScript: Permite convertir modelos de PyTorch en un formato más optimizado y serializado, lo que facilita la implementación en entornos de producción. - ◘
Autograd: Un motor automático de diferenciación que calcula gradientes, esencial para entrenar redes neuronales mediante backpropagation. - ◘
PyTorch Lightning: Una herramienta que estructura los modelos de PyTorch, permitiendo desarrollar y entrenar de manera más eficiente al separar la lógica del modelo y la lógica del entrenamiento.

Haz click aquí para ver algunos ejemplos de uso con PyTorch.
Kaggle
Kaggle es una plataforma en línea que proporciona un espacio para científicos de datos y entusiastas del machine learning donde pueden colaborar, compartir conocimientos, y participar en competencias de análisis de datos. En Kaggle, se pueden encontrar conjuntos de datos abiertos, soluciones a problemas complejos de aprendizaje automático, y herramientas como notebooks, que permiten trabajar directamente desde el navegador con un entorno configurado con Python y R. Además, la comunidad de Kaggle es muy activa, lo que fomenta el intercambio de ideas y el aprendizaje a través de kernels y discusiones.
Una de las principales atracciones de Kaggle son las competencias de ciencia de datos, donde las empresas proponen desafíos y los participantes compiten por crear el mejor modelo. También es muy útil para construir portafolios profesionales y ganar visibilidad en el campo de la ciencia de datos. Kaggle ofrece un entorno gratuito con acceso a GPUs y TPUs, facilitando el entrenamiento de modelos complejos sin la necesidad de recursos locales.
A continuación, te pasaré un modelo de clasificación de cartas de póker en Kaggle, donde podrás evaluar el desempeño del modelo en este entorno especializado.

Conda
Conda es una herramienta extremadamente útil para gestionar entornos y paquetes, permitiendo trabajar en proyectos de manera aislada sin que las dependencias de diferentes proyectos interfieran entre sí. Para crear un entorno de prueba con PyTorch, primero debes asegurarte de tener Conda instalado en tu sistema. Al crear un entorno virtual, puedes aislar las versiones de Python y las bibliotecas que necesitas para un proyecto específico, lo que evita problemas de compatibilidad entre distintos proyectos. Esto es particularmente útil cuando trabajas en múltiples proyectos que pueden requerir diferentes versiones de PyTorch, TensorFlow u otros paquetes.
A continuación te muestro los pasos para crear y activar un entorno en Conda y cómo instalar los paquetes necesarios para deep learning:
Este comando crea un entorno llamado pytorch_test con la versión 3.8 de Python. Puedes cambiar el nombre y la versión de Python si lo necesitas.
Este comando activa el entorno que acabas de crear, y a partir de aquí cualquier paquete que instales quedará limitado a este entorno.
Crear un entorno virtual es importante porque garantiza que puedes gestionar diferentes configuraciones de paquetes para distintos proyectos, manteniendo cada uno aislado en su propio espacio de trabajo. Esto no solo ayuda a evitar conflictos de dependencias, sino que también facilita la replicabilidad de los experimentos, ya que puedes controlar exactamente qué versión de cada paquete se está utilizando.

Google Colab
Google Colab es una plataforma gratuita de Google que permite ejecutar código en cuadernos Jupyter sin necesidad de configuraciones locales. Está especialmente diseñada para trabajar con proyectos de machine learning y deep learning, ya que viene preconfigurada con muchas de las bibliotecas más utilizadas, como PyTorch, TensorFlow, Keras y Scikit-learn. No requiere instalación local de Python ni de estas librerías, lo que la convierte en una herramienta muy conveniente para quienes desean probar y ejecutar modelos rápidamente.
Una de las mayores ventajas de Google Colab es que ofrece acceso gratuito a hardware acelerado, como GPUs y TPUs, lo que es esencial para entrenar modelos complejos de deep learning en menos tiempo. Esto resulta muy útil si no cuentas con una GPU en tu sistema local, ya que puedes beneficiarte de una aceleración significativa sin necesidad de inversión en hardware costoso. Para usar Google Colab, solo necesitas una cuenta de Google y un navegador web. Al abrir un cuaderno en Colab, puedes acceder a una máquina virtual con Python y las bibliotecas de deep learning ya instaladas. Simplemente puedes importar PyTorch o TensorFlow y comenzar a desarrollar o entrenar modelos sin preocuparte por instalaciones o configuraciones complejas.
Otra ventaja es la colaboración en tiempo real. Colab permite compartir cuadernos con otros usuarios de forma similar a Google Docs, lo que facilita el trabajo en equipo o la enseñanza de conceptos relacionados con machine learning y deep learning. Además, como los cuadernos se almacenan en Google Drive, no es necesario guardar nada en tu máquina local, lo que añade conveniencia y seguridad a tus proyectos.
