# Compendio: Frameworks para Inteligencia Artificial
## Fundamentos para IA - Semana 3 (NRC-197)

**Fecha de compilación:** 31 de enero de 2026  
**Resultado de aprendizaje:** Usa frameworks para Inteligencia Artificial  

---

## 📌 ¿Qué es un Framework de IA?

Un **framework de IA** es una herramienta, interfaz o biblioteca que permite desarrollar modelos de aprendizaje automático fácilmente, sin necesidad de comprender los algoritmos subyacentes en detalle.

Permiten la creación más fácil y rápida de:
- Soluciones de **aprendizaje automático (ML)**
- **Aprendizaje profundo (Deep Learning)**
- **Redes neuronales**
- **Procesamiento del lenguaje natural (NLP)**

---

## 🏆 Top 7 Frameworks de IA

### 1. TensorFlow

| Característica | Detalle |
|----------------|---------|
| **Desarrollador** | Google AI |
| **Tipo** | Open Source |
| **Lenguajes** | Python, C++, CUDA |
| **Mejor para** | Deep Learning, NLP, Redes Neuronales |

**Descripción:**
Framework más popular del mercado. Utiliza grafos de flujo de datos para computaciones numéricas complejas. Compatible con CPU, GPU, desktop, servidor y dispositivos móviles.

**Clientes:** Airbnb, eBay, Dropbox, Coca-Cola, AMD, SAP, Intel, Nvidia

**Ventajas:**
- Código limpio y desarrollo eficiente gracias a abstracciones
- Soporta clasificación, regresión, deep learning y NLP

**Desventajas:**
- Python no es el lenguaje más rápido
- Carece de modelos ML pre-entrenados nativos

---

### 2. Microsoft CNTK (Cognitive Toolkit)

| Característica | Detalle |
|----------------|---------|
| **Desarrollador** | Microsoft |
| **Tipo** | Open Source |
| **Lenguajes** | C++, C#, Java, Python |
| **Mejor para** | Deep Learning, Predicciones |

**Descripción:**
Toolkit de deep learning que usa grafos dirigidos para describir redes neuronales como pasos computacionales. Tiene su propio lenguaje de descripción de modelos llamado **BrainScript**.

**Clientes:** Skype, Cortana, Bing

**Ventajas:**
- Muy flexible, permite entrenamiento distribuido
- Escalabilidad eficiente desde CPU hasta múltiples GPUs

**Desventajas:**
- Implementado en Network Description Language
- Carece de herramientas de visualización

---

### 3. Keras

| Característica | Detalle |
|----------------|---------|
| **Desarrollador** | François Chollet (Google) |
| **Tipo** | Open Source |
| **Lenguaje** | Python |
| **Mejor para** | Prototipado rápido de redes neuronales |

**Descripción:**
API de alto nivel diseñada para humanos, no máquinas. No es un framework end-to-end, sino una interfaz que corre sobre TensorFlow, CNTK o Theano.

**Ventajas:**
- Extremadamente fácil de usar
- Corre en CPU y GPU sin cambios de código
- Módulos fáciles de agregar y combinar

**Desventajas:**
- No puede usarse eficientemente como framework independiente

---

### 4. Theano

| Característica | Detalle |
|----------------|---------|
| **Desarrollador** | Universidad de Montreal |
| **Tipo** | Open Source |
| **Lenguaje** | Python |
| **Mejor para** | Operaciones matemáticas con arrays multidimensionales |

**Descripción:**
Biblioteca Python para definir, optimizar y evaluar expresiones matemáticas. Usa GPU de forma transparente para operaciones intensivas en datos, superando incluso a C en CPU.

**Ventajas:**
- Alta eficiencia en operaciones computacionales
- Combina sistema de álgebra computacional con compilador optimizador

**Desventajas:**
- Desarrollo oficial descontinuado (2017), aunque la comunidad lo mantiene

---

### 5. Scikit-learn

| Característica | Detalle |
|----------------|---------|
| **Desarrollador** | Comunidad Open Source |
| **Tipo** | Open Source, uso comercial permitido |
| **Lenguaje** | Python |
| **Mejor para** | ML tradicional (clasificación, regresión, clustering) |

**Descripción:**
Biblioteca multipropósito para ML en Python. Soporta aprendizaje supervisado y no supervisado, preprocesamiento y selección de modelos.

**Características principales:**
- Clasificación, regresión, clustering
- Reducción de dimensionalidad
- Validación cruzada
- Preprocesamiento de datos

**Ventajas:**
- Documentación excelente
- Fácil integración con Pandas y NumPy
- Ideal para ML clásico

**Desventajas:**
- No está diseñado para deep learning

---

### 6. Caffe

| Característica | Detalle |
|----------------|---------|
| **Desarrollador** | Berkeley AI Research (BAIR) |
| **Tipo** | Open Source |
| **Lenguajes** | C++, CUDA, Python, MATLAB |
| **Mejor para** | Clasificación de imágenes, CNN |

**Descripción:**
Framework de deep learning que prioriza expresión, velocidad y modularidad. Puede procesar más de 60 millones de imágenes por día con una GPU NVIDIA K40.

**Ventajas:**
- Extremadamente rápido para procesamiento de imágenes
- Fácil construcción de CNN (Redes Neuronales Convolucionales)
- Switch entre CPU y GPU

**Desventajas:**
- Curva de aprendizaje más pronunciada

---

### 7. PyTorch (Torch)

| Característica | Detalle |
|----------------|---------|
| **Desarrollador** | Facebook AI Research (Meta) |
| **Tipo** | Open Source |
| **Lenguajes** | Python, C++, CUDA (originalmente Lua) |
| **Mejor para** | Investigación en deep learning |

**Descripción:**
Framework de computación científica que pone las GPUs primero. Similar a NumPy pero con soporte GPU. Ofrece flexibilidad para implementar topologías de redes neuronales complejas.

**Ventajas:**
- Ideal para investigación y experimentación
- Grafos dinámicos (vs. estáticos de TensorFlow clásico)
- Gran flexibilidad y facilidad de depuración

**Desventajas:**
- Históricamente menor soporte para producción (ahora mejorado con TorchServe)

---

## 📊 Tabla Comparativa

| Framework | Lenguaje Principal | Mejor Uso | Desarrollador | Dificultad |
|-----------|-------------------|-----------|---------------|------------|
| **TensorFlow** | Python | Producción + Deep Learning | Google | Media |
| **CNTK** | Python/C++ | Deep Learning empresarial | Microsoft | Alta |
| **Keras** | Python | Prototipado rápido | Google | Baja |
| **Theano** | Python | Operaciones matemáticas | U. Montreal | Alta |
| **Scikit-learn** | Python | ML tradicional | Comunidad | Baja |
| **Caffe** | C++/Python | Visión por computadora | Berkeley | Media |
| **PyTorch** | Python | Investigación | Meta (Facebook) | Media |

---

## 🎯 ¿Cuál elegir según el caso de uso?

| Caso de Uso | Framework Recomendado |
|-------------|----------------------|
| Aprender ML por primera vez | **Scikit-learn** |
| Prototipado rápido de redes neuronales | **Keras** |
| Proyectos de producción empresarial | **TensorFlow** |
| Investigación académica | **PyTorch** |
| Procesamiento masivo de imágenes | **Caffe** |
| Ecosistema Microsoft/.NET | **CNTK** |
| Aplicaciones NLP | **TensorFlow** o **PyTorch** |

---

## 🐍 ¿Por qué Python para IA?

Python domina el desarrollo de IA por:

1. **Sintaxis simple y legible** - Reduce la curva de aprendizaje
2. **Ecosistema de bibliotecas** - NumPy, Pandas, Matplotlib, Scikit-learn
3. **Comunidad activa** - Miles de recursos y soporte
4. **Integración con frameworks de IA** - Todos los frameworks soportan Python
5. **Prototipado rápido** - De idea a código funcional en minutos
6. **Interoperabilidad** - Fácil integración con C++, Java, bases de datos

---

## 📚 Fuentes Consultadas

1. **Boschetti, A. y Massaron, L. (2018).** *Python Data Science Essentials* (pp. 281-331). Packt Publishing.

2. **Guven, B. (2020).** *5 Top Artificial Intelligence Frameworks for 2021*. Towards Data Science.

3. **Mistry, J. (2021).** *7 Best AI Frameworks and Tools*. Space O Technologies.
   - URL: https://www.spaceotechnologies.com/blog/top-ai-frameworks-tools/

4. **CyberCraft Inc.** *Top 10 Trending AI Frameworks and Libraries*. HackerNoon.
   - URL: https://hackernoon.com/top-10-trending-artificial-intelligence-frameworks-and-libraries-69ba59057a78

5. **Koul, D. (2021).** *10 Best AI Frameworks to create Machine Learning Applications*. It4nextgen.

---

## 🎬 Recursos Audiovisuales

### Video 1: Framework vs Librería - La mejor explicación en español

[![Framework vs Librería](https://img.youtube.com/vi/A-iKX8Shge4/0.jpg)](https://www.youtube.com/watch?v=A-iKX8Shge4)

**URL:** https://www.youtube.com/watch?v=A-iKX8Shge4

**Tema:** Diferencia conceptual entre framework y librería en desarrollo de software.

**Conceptos clave:**
- **Librería:** Tú controlas el flujo; llamas a la librería cuando la necesitas
- **Framework:** El framework controla el flujo; tú escribes código que el framework invoca
- **Inversión de control:** Principio fundamental que distingue frameworks de librerías

---

### Video 2: PyTorch vs TensorFlow vs Keras | Comparación de Frameworks Deep Learning

[![PyTorch vs TensorFlow vs Keras](https://img.youtube.com/vi/4L86D_fU6sQ/0.jpg)](https://www.youtube.com/watch?v=4L86D_fU6sQ)

**URL:** https://www.youtube.com/watch?v=4L86D_fU6sQ  
**Fuente:** Simplilearn

**Tema:** Comparación directa de los 3 frameworks más populares para deep learning.

**Resumen comparativo:**

| Aspecto | PyTorch | TensorFlow | Keras |
|---------|---------|------------|-------|
| **Desarrollador** | Meta (Facebook) | Google | Google |
| **Nivel** | Bajo/Medio | Bajo/Medio | Alto |
| **Curva de aprendizaje** | Moderada | Pronunciada | Suave |
| **Mejor para** | Investigación | Producción | Prototipado |
| **Grafos** | Dinámicos | Estáticos (v1) / Dinámicos (v2) | N/A (usa TF) |
| **Debugging** | Fácil | Difícil (v1) / Mejor (v2) | Fácil |

---

## ✅ Checklist de Aprendizaje Semana 3

- [x] Identificar diferentes frameworks de IA existentes
- [x] Comprender características de cada framework
- [x] Conocer ventajas y desventajas de cada uno
- [x] Identificar principales aplicaciones y usos
- [x] Entender por qué Python es el lenguaje dominante en IA
